假设有一个类(MailManager)它负责接收电子邮件,MailManager类公开一个NewMail事件,当接收到新的邮件时会触发NewMail事件,造成邮件分发给邮件处理对象(Fax类和Pager类的对象)。
第一步:定义类型来容纳邮件所有需要发送给邮件处理对象(Fax类和Pager类的对象)的信息;
第二步:定义委托类型
第三步:MailManger类定义事件成员
class MailManger
{
public event MyEventHandler NewMail;//创建事件成员
public void OnNewMail(NewMailEventArgs e)//触发事件的方法,收到新邮件
{
if (NewMail != null)
{
NewMail(e);
}
}
}
第四步:Fax类和Pager类中定义事件处理方法
class Fax
{
public void Mail(NewMailEventArgs e)
{
Console.WriteLine("邮件发送人:"+e.From+" 收件人"+e.To+" 邮件标题"+e.Subject);
Console.WriteLine("Fax邮件正在处理中!!!!!!!");
}
}
class Pager
{
public void Mail(NewMailEventArgs e)
{
Console.WriteLine("邮件发送人:" + e.From + " 收件人" + e.To + " 邮件标题" + e.Subject);
Console.WriteLine("Pager邮件正在处理中!!!!!!!");
}
}
Fax类和Pager类接收的事件通知信息是一样的,但是它们的处理方法实现可以不同。
模拟收到邮件:
MailManger mail = new MailManger();
NewMailEventArgs e = new NewMailEventArgs("me","你好","你好希望!!!");//邮件信息
Fax fax = new Fax();
Pager pager = new Pager();
mail.NewMail += new MyEventHandler(pager.Mail);//绑定事件与事件处理方法
mail.NewMail += new MyEventHandler(fax.Mail);
mail.OnNewMail(e);//收到邮件 触发事件 调用事件处理方法