using System;
public class Test
{
interface IGenericOrder<out T> where T : new()
{
Func<int,T> GetStatement(string name);
}
public class GenericOrder<T> : IGenericOrder<T> where T : new()
{
public Func<int,T> GetStatement(string name)
{
return (x) => default(T);
}
}
public static void Main()
{
var ord = new GenericOrder<int>();
var n = ord.GetStatement("")(5);
Console.WriteLine(n);
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJCglpbnRlcmZhY2UgSUdlbmVyaWNPcmRlcjxvdXQgVD4gd2hlcmUgVCA6IG5ldygpCiAgICB7CiAgICAgICAgRnVuYzxpbnQsVD4gR2V0U3RhdGVtZW50KHN0cmluZyBuYW1lKTsKICAgIH0KCgogICAgcHVibGljIGNsYXNzIEdlbmVyaWNPcmRlcjxUPiA6IElHZW5lcmljT3JkZXI8VD4gd2hlcmUgVCA6IG5ldygpCiAgICB7CiAgICAgICAgcHVibGljIEZ1bmM8aW50LFQ+IEdldFN0YXRlbWVudChzdHJpbmcgbmFtZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAoeCkgPT4gZGVmYXVsdChUKTsKICAgICAgICB9ICAgIAogICAgfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIG9yZCA9IG5ldyBHZW5lcmljT3JkZXI8aW50PigpOwoJCXZhciBuID0gb3JkLkdldFN0YXRlbWVudCgiIikoNSk7CgkJQ29uc29sZS5Xcml0ZUxpbmUobik7Cgl9Cn0=