using System;
namespace ConsoleApp1
{
public class Program
{
static void Main(string[] args)
{
var tw = new TopWork();
tw.Work();
}
}
public class TopWork
{
public Work _work;
public TopWork()
{
_work = new Work();
_work._event += new Work.CompleteHandler(Done1);
_work._delegate += new Work.CompleteHandler(Done1);
}
public void Work()
{
_work.JustWork();
}
private void Done1(int number)
{
Console.WriteLine($"Done1 {number}");
}
}
public class Work
{
public delegate void CompleteHandler(int number);
public Work.CompleteHandler _delegate;
public event Work.CompleteHandler _event;
public void JustWork()
{
_delegate(4);
_event(4);
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIENvbnNvbGVBcHAxCnsKICAgIHB1YmxpYyBjbGFzcyBQcm9ncmFtCiAgICB7CiAgICAgICAgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHR3ID0gbmV3IFRvcFdvcmsoKTsKICAgICAgICAgICAgdHcuV29yaygpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgY2xhc3MgVG9wV29yawogICAgewogICAgICAgIHB1YmxpYyBXb3JrIF93b3JrOwoKICAgICAgICBwdWJsaWMgVG9wV29yaygpCiAgICAgICAgewogICAgICAgICAgICBfd29yayA9IG5ldyBXb3JrKCk7CiAgICAgICAgICAgIF93b3JrLl9ldmVudCArPSBuZXcgV29yay5Db21wbGV0ZUhhbmRsZXIoRG9uZTEpOwogICAgICAgICAgICBfd29yay5fZGVsZWdhdGUgKz0gbmV3IFdvcmsuQ29tcGxldGVIYW5kbGVyKERvbmUxKTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyB2b2lkIFdvcmsoKQogICAgICAgIHsKICAgICAgICAgICAgX3dvcmsuSnVzdFdvcmsoKTsKICAgICAgICB9CgogICAgICAgIHByaXZhdGUgdm9pZCBEb25lMShpbnQgbnVtYmVyKQogICAgICAgIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJEb25lMSB7bnVtYmVyfSIpOwogICAgICAgIH0KICAgIH0KICAgICAgICAKCiAgICBwdWJsaWMgY2xhc3MgV29yawogICAgewogICAgICAgIHB1YmxpYyBkZWxlZ2F0ZSB2b2lkIENvbXBsZXRlSGFuZGxlcihpbnQgbnVtYmVyKTsKICAgICAgICBwdWJsaWMgV29yay5Db21wbGV0ZUhhbmRsZXIgX2RlbGVnYXRlOwogICAgICAgIHB1YmxpYyBldmVudCBXb3JrLkNvbXBsZXRlSGFuZGxlciBfZXZlbnQ7CgogICAgICAgIHB1YmxpYyB2b2lkIEp1c3RXb3JrKCkKICAgICAgICB7CiAgICAgICAgICAgIF9kZWxlZ2F0ZSg0KTsKICAgICAgICAgICAgX2V2ZW50KDQpOwogICAgICAgIH0KICAgIH0KfQo=