zoukankan      html  css  js  c++  java
  • 事件初步学习

            假设有一个类(MailManager)它负责接收电子邮件,MailManager类公开一个NewMail事件,当接收到新的邮件时会触发NewMail事件,造成邮件分发给邮件处理对象(Fax类和Pager类的对象)。

      第一步:定义类型来容纳邮件所有需要发送给邮件处理对象(Fax类和Pager类的对象)的信息;

    class NewMailEventArgs:EventArgs// 
        {
            private string from;//邮件发出人
            private string to;//邮件收取人
            private string subject;//邮件主题
            public NewMailEventArgs(string from,string to,string subject)
            {
                this.from = from;
                this.to = to;
                this.subject = subject;
            }
            public string From{get{return from;}}
            public string To{get{return to ;}}
            public string Subject{get{return subject;}}
        }
    

      

     第二步:定义委托类型

     delegate void MyEventHandler(NewMailEventArgs e);//定义委托类型
     //CLR的事件模型是建立在委托的基础上的
     //通俗的讲这里定义的委托类型作用在于把事件成员和事件处理方法在在不同的类中绑定一起
    

      

    第三步: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);//收到邮件   触发事件   调用事件处理方法
    

      

  • 相关阅读:
    NHibernate Session-per-request and MiniProfiler.NHibernate
    NHibernate ConfORM Mapping
    微信小程序之网页开发——博客园老牛大讲堂
    帝国后台CMS模版使用
    微信小程序开发---博客园老牛大讲堂
    帝国CMS浅浅滴谈一下——博客园老牛大讲堂
    Java实现 第三方的验证码发送问题--博客园老牛大讲堂
    关于websocket自定义通信,聊天工具--博客园老牛大讲堂
    对ECMAScript的理解---博客园老牛大讲堂
    Css3引用外部字体样式---博客园老牛大讲堂
  • 原文地址:https://www.cnblogs.com/Chh884/p/3957252.html
Copyright © 2011-2022 走看看