简单易于理解的C#事件代理例子

来源:互联网 发布:万科荣华金域名城 编辑:程序博客网 时间:2024/05/21 06:20

事件代理通常使学程序的人感到头疼,看了这个例子,你或许就会慌然大悟.

 using System;
using System.Collections.Generic;
using System.Text;

namespace EventDelegateApp
{
    //带有参数的Deletegate 功能是:老版知道谁上班玩游戏.只要有员工玩游戏,立即通过代理通知老板
    public delegate void DeletegateClassHandle(object sender,CustomerEventArgs e);
    class Program
    {
        static void Main(string[] args)
        {
            Employee employee = new Employee();
            employee.Age = 18;
            employee.Name = "Mike";
           
            Admin admin = new Admin();
            employee.PlayGame += new DeletegateClassHandle(admin.Notify);
           
            employee.Games();
            Console.Read();


        }
    }
   public class CustomerEventArgs:EventArgs
   {
       string name = "";
       int age = 0;
       public CustomerEventArgs()
       { }
       public string Name
       {
           get { return this.name; }
           set { this.name = value; }
       }
       public int Age
       {
           get { return this.age; }
           set { this.age = value; }
       }
  
   }

   public class Employee
   {
       private string _name;
       private int _age;
       public string Name
       {
           get { return this._name; }
           set { this._name = value; }
       }
       public int Age
       {
           get { return this._age; }
           set { this._age = value; }
       }
      
      
       public event DeletegateClassHandle PlayGame;
     
       public void Games()
       {
           if (PlayGame != null)
           {
               CustomerEventArgs ee = new CustomerEventArgs();
               ee.Age = this._age;
               ee.Name = this._name;

               PlayGame(this,ee);
           }
       }
   }
   public class Admin
   {
       public void Notify(object sender,CustomerEventArgs e)
       {
           Console.WriteLine( e.Age.ToString()+" years old "+e.Name+" is playing game");
       }
   }


}

原创粉丝点击