事件代理通常使学程序的人感到头疼,看了这个例子,你或许就会慌然大悟.
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");
}
}
}