using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var myClass = new MyClass();
//мы можем написать свой делегат, потому что нам доступен тип
myClass.SetMyClass2Creater(() => new MyClass.MyClass2());
}
}
}
internal class MyClass
{
private Func<MyClass2> Creater;
public void SetMyClass2Creater(Func<MyClass2> creater)
{
Creater = creater;
}
public class MyClass2
{
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIENvbnNvbGVBcHBsaWNhdGlvbjEKewogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBteUNsYXNzID0gbmV3IE15Q2xhc3MoKTsKICAgICAgICAgICAgLy/QvNGLINC80L7QttC10Lwg0L3QsNC/0LjRgdCw0YLRjCDRgdCy0L7QuSDQtNC10LvQtdCz0LDRgiwg0L/QvtGC0L7QvNGDINGH0YLQviDQvdCw0Lwg0LTQvtGB0YLRg9C/0LXQvSDRgtC40L8KICAgICAgICAgICAgbXlDbGFzcy5TZXRNeUNsYXNzMkNyZWF0ZXIoKCkgPT4gbmV3IE15Q2xhc3MuTXlDbGFzczIoKSk7CgkJfQogICAgfQp9CgppbnRlcm5hbCBjbGFzcyBNeUNsYXNzCnsKICAgIHByaXZhdGUgRnVuYzxNeUNsYXNzMj4gQ3JlYXRlcjsKCiAgICBwdWJsaWMgdm9pZCBTZXRNeUNsYXNzMkNyZWF0ZXIoRnVuYzxNeUNsYXNzMj4gY3JlYXRlcikKICAgIHsKICAgICAgICBDcmVhdGVyID0gY3JlYXRlcjsKICAgIH0KCiAgICBwdWJsaWMgY2xhc3MgTXlDbGFzczIKICAgIHsKICAgICAgIAogICAgfQp9