using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TDelegate { public delegate void MyHandler1(object sender, MyEventArgs e); public delegate void MyHandler2(object sender, MyEventArgs e); public class Program { public static void Main() { B b = new B(); A a = new A(b); MyEventArgs e1 = new MyEventArgs(); MyEventArgs e2 = new MyEventArgs(); e1.m_id = "Event args for event 1"; e2.m_id = "Event args for event 2"; b.FireEvent1(e1); b.FireEvent2(e2); Console.ReadKey(); } } class A { public A(B b) { b.Event1 += new MyHandler1(OnHandler1); b.Event2 += new MyHandler2(OnHandler2); } public const string m_id = "Class A"; public void OnHandler1(object sender, MyEventArgs e) { Console.WriteLine("I am in OnHandler1 and MyEventArgs is {0}", e.m_id); } public void OnHandler2(object sender, MyEventArgs e) { Console.WriteLine("I am in OnHandler2 and MyEventArgs is {0}", e.m_id); } } class B { public event MyHandler1 Event1; public event MyHandler2 Event2; public void FireEvent1(MyEventArgs e) { if (Event1 != null) { Event1(this, e); } } public void FireEvent2(MyEventArgs e) { if (Event2 != null) { Event2(this, e); } } } public class MyEventArgs { public string m_id; } }