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;
}
}
本文摘自 :https://blog.51cto.com/u