using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace test
{
//事件类型.
class CarInfoEventArgs : EventArgs
{
public string Car { get; private set; }
public CarInfoEventArgs(string carName)
{
this.Car = carName;
}
};
//代理
class CarDealer
{
//private delegate EventHandler<CarInfoEventArgs> NewCarInfoEvent;
public event EventHandler<CarInfoEventArgs> NewCarInfoEvent
{
add
{
this.NewCarInfoEvent += value;
}
remove
{
this.NewCarInfoEvent -= value;
}
}
public CarDealer() { }
public void NewCar(string carName)
{
Console.WriteLine("来了一辆新车");
this.RaiseNewCarInfo(carName);
}
protected /*virtual*/ void RaiseNewCarInfo(string carName)
{
EventHandler<CarInfoEventArgs> newCarInfoEvent = this.NewCarInfoEvent;
if (newCarInfoEvent != null)
{
newCarInfoEvent(this, new CarInfoEventArgs(carName));
}
}
};
//事件监听.
class Consumer
{
private string name;
public Consumer(string theName)
{
this.name = theName;
}
public void NewCarIsHere(object sender, CarInfoEventArgs arg)
{
Console.WriteLine("车的信息: " + arg.Car);
}
};
class test
{
private delegate string GetString();
public static void Main(string[] args)
{
var dealer = new CarDealer();
var shihua = new Consumer("shihua");
dealer.NewCarInfoEvent += shihua.NewCarIsHere;
dealer.NewCar("Ferarri");
//取消事件订阅.
dealer.NewCarInfoEvent -= shihua.NewCarIsHere;
return;
}
}
}