class PubEventArgs : EventArgs

{
private readonly string m_name;
private readonly DateTime m_date;
public PubEventArgs (string name,DateTime date )

{
m_name=name ;
m_date = date;
}
public string name

{
get

{
return m_name;
}
}
public DateTime date

{
get

{
return m_date;
}
}

}
class Publisher //发行方

{
public delegate void PubComputerEventHandler(object sender, PubEventArgs e); //定义委托
public delegate void PubLifeEvertHandler(object sender, PubEventArgs e); //定义委托
public event PubComputerEventHandler pubcomputer; //定义事件 格式:【访问修饰符】 + event + 委托 +事件名
public event PubLifeEvertHandler publife; //定义事件
public virtual void OnComputer(PubEventArgs e)

{
PubComputerEventHandler handler = pubcomputer; //声明临时委托
if (handler != null)

{
handler(this,e );
}
}
public virtual void OnLife(PubEventArgs e)

{
PubLifeEvertHandler handler = publife;
if(handler !=null )

{
handler(this, e);
}
}
public void IstureComputer(string name, DateTime date) //触发电脑杂志事件

{
Console.WriteLine("发行" + name);
OnComputer(new PubEventArgs (name,date ));
}
public void IstrueLife(string name, DateTime date) //触发生活杂志事件

{
Console.WriteLine("发行" + name);
OnLife(new PubEventArgs(name, date));
}

}
class Reader //订阅事件

{
private string name;
public Reader(string name)

{
this.name = name;
}
public void Receive(object sender, PubEventArgs e) //必须和委托参数一样

{
Console.WriteLine(e.date + "已收到" + name + e.name);
}
}
class Test

{
static void Main()

{
Publisher aa = new Publisher();
Reader zs = new Reader("张三");
//订阅事件 格式:事件名+=new 委托名()
aa.pubcomputer += new Publisher.PubComputerEventHandler(zs.Receive); //触发事件
Reader ls = new Reader("李四");
aa.pubcomputer += new Publisher.PubComputerEventHandler(ls.Receive); //触发事件
aa.publife += new Publisher.PubLifeEvertHandler(ls.Receive); //触发事件
aa.IstureComputer ("电脑杂志" , Convert.ToDateTime("2005-08-18"));
aa.IstrueLife("生活杂志" , Convert.ToDateTime("2005-08-18"));


}
}


posted on 2008-05-07 00:02
默默無語中 阅读(18)
评论(0) 编辑 收藏 网摘