C# 이벤트 위임

2286 단어
오늘 사건을 배웠는데 이 장을 보고 나니 책의 번거로움이 혼란스러웠다. 그리고 인터넷에서 어떤 설명을 보고 사건을 어떻게 정의하고 방법을 이용하여 이 사건을 촉발하며 의뢰를 이용하여 사건을 귀속시켜 처리하는 방법을 대충 이해했다.
만약에 하나의 클래스(MailManager)가 전자메일을 수신한다고 가정하면MailManager 클래스는 새로운 메일을 받을 때 뉴스메일 이벤트를 촉발하여 메일을 메일 처리 대상(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;}}
    }

2단계: 위임 유형 정의
 delegate void MyEventHandler(NewMailEventArgs e);// 
 //CLR 
 // 

3단계: MailManager 클래스에서 이벤트 구성원 정의
  class MailManger
    {
        public event MyEventHandler NewMail;// 
        public void OnNewMail(NewMailEventArgs e)// , 
        {
            if (NewMail != null)
            {
                NewMail(e);
            }
        }
    }

4단계: 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);//         

좋은 웹페이지 즐겨찾기