using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { delegate void MyEventDeligate(); class MyEvent { public event MyEventDeligate activate; public void fire() { if (activate != null) activate(); } } class Goverment { public string Name; public Goverment(string name) { this.Name = name; } public void PrintName() { Console.WriteLine(this.Name); } } class Republic : Goverment { public string President; public Republic(string name, string president) : base(name) { this.President = president; } public void PrintPresident() { Console.WriteLine(this.President); } } class TheMonarchy : Goverment { public string Monarch; public TheMonarchy(string name, string monarch) : base(name) { this.Monarch = monarch; } public void PrintTheMonarchy() { Console.WriteLine(this.Monarch); } } class Kingdom : TheMonarchy { public string NameKingdom; public Kingdom(string name, string monarch, string namekingdom) : base(name, monarch) { this.NameKingdom = namekingdom; } public void PrintNameKingdom() { Console.WriteLine(this.NameKingdom); } } class Program { static void Main(string[] args) { Goverment UK = new Goverment("UK"); TheMonarchy Elizabet = new TheMonarchy("UK", "Elizabet"); Kingdom Britan = new Kingdom("UK", "Elizabet", "Britan"); Goverment Ukrain = new Goverment("Ukrain"); Republic President = new Republic("Ukrain", "Poroshenko"); MyEvent even = new MyEvent2(); even.activate += new MyEventDeligate(Ukrain.PrintName); even.activate += new MyEventDeligate(President.PrintPresident); try { even.fire(); } catch (DivideByZeroException) { } Console.ReadKey(); } } }