class PubEventArgs : EventArgs
{
private readonly string _magname;
public string Magname
{
get { return _magname; }
}
public PubEventArgs(string magname)
{
_magname = magname;
}
}
class Event//创建事件类
{
public delegate void PubComputerEventHandle(object sender,PubEventArgs e);//声明委托
public event PubComputerEventHandle PubComputer;//创建委托链,即事件
public delegate void PubLifeEventHandle(object sender, PubEventArgs e);
public event PubLifeEventHandle PubLife;
public virtual void OnComputer(PubEventArgs e)
{
PubComputerEventHandle handle = PubComputer;
if (handle != null)
{
handle(this,e);
}
}
public virtual void OnLife(PubEventArgs e)
{
PubLifeEventHandle handle = PubLife;
if (handle != null)
{
handle(this, e);
}
}
public void IsComputer(string magname)//创建触发事件过程
{
Console.WriteLine("发行"+magname+"杂志");
OnComputer(new PubEventArgs(magname));
}
public void IsLife(string magname)
{
Console.WriteLine("发行" + magname + "杂志");
OnComputer(new PubEventArgs(magname));
}
}
class Man//创建操作主体
{
public string name;
public Man(string name)
{
this.name = name;
}
public void Order(object sender, PubEventArgs e)//在主体中创建被委托的函数
{
Console.WriteLine(name + "订阅" + e.Magname + "刊物");
}
}
class Program
{
static void Main(string[] args)
{
Event e = new Event();//事件建好
Man zs = new Man("张三");//主体建好
e.PubComputer += new Event.PubComputerEventHandle(zs.Order);//调用主体的被委托函数
Man ls = new Man("李四");
e.PubComputer += new Event.PubComputerEventHandle(ls.Order);
e.PubLife += new Event.PubLifeEventHandle(ls.Order);
e.IsComputer("电脑");//触发事件
e.IsLife("生活");
Console.Read();
}
}