实例:
class Program
{
static void Main(string[] args)
{
DelegateEvent de = new DelegateEvent();
de.Do();
Console.Read();
}
}
{
static void Main(string[] args)
{
DelegateEvent de = new DelegateEvent();
de.Do();
Console.Read();
}
class DelegateEvent
{
public void Do() {
FangDiChanPublisher fdc = new FangDiChanPublisher();
BuyerSubscriber buyer = new BuyerSubscriber();
buyer.BuyerDemand = "80平方米,100万元RMB,三室一厅的房子";
fdc.PublisherHouseInfo();
fdc.FindHouseEvent += new HouseDelegateHandler(buyer.BuyHouse);//买房者委托中介找房
fdc.FindHouse(); // 应该通过FindHouse()来触发事件
//fdc.FindHouse(); // 但可以被这样直接调用,对委托变量的不恰当使用,当Publisher的委托变量被注释后,则不能这样使用
}
}
//定义委托:定义一个房地产中介. 委托是将方法(函数)做为参数传递
public delegate void HouseDelegateHandler(string message);
//定义事件发布者
public class FangDiChanPublisher
{
//public HouseDelegateHandler FindHouseEvent;
public event HouseDelegateHandler FindHouseEvent;// 声明一个事件
public static string BuyerDemand
{
set;
get;
}
public void PublisherHouseInfo()
{
Console.WriteLine("深圳某某房地产中介发布房源信息:拥有大量优势房源,有意者请联系:xxxxxxx");
}
public void FindHouse() {
//做其他事情...
if (FindHouseEvent != null)//如果有买房者委托了中介找房
{
FindHouseEvent(BuyerDemand);
Find();//在已有的房源中找匹配的房子...
}
}
public void Find()
{
Console.WriteLine("(深圳某某房地产中介)只花了一小会工夫房子就找到了合适的房子.");
}
}
//定义事件订阅者
public class BuyerSubscriber
{
public string BuyerDemand
{
set{FangDiChanPublisher.BuyerDemand =value;}
}
public void BuyHouse(string demand)
{
Console.WriteLine("买房者跟房地产中介提出的需求:{0}",demand);
}
}
{
public void Do() {
FangDiChanPublisher fdc = new FangDiChanPublisher();
BuyerSubscriber buyer = new BuyerSubscriber();
buyer.BuyerDemand = "80平方米,100万元RMB,三室一厅的房子";
fdc.PublisherHouseInfo();
fdc.FindHouseEvent += new HouseDelegateHandler(buyer.BuyHouse);//买房者委托中介找房
fdc.FindHouse(); // 应该通过FindHouse()来触发事件
//fdc.FindHouse(); // 但可以被这样直接调用,对委托变量的不恰当使用,当Publisher的委托变量被注释后,则不能这样使用
}
}
//定义委托:定义一个房地产中介. 委托是将方法(函数)做为参数传递
public delegate void HouseDelegateHandler(string message);
//定义事件发布者
public class FangDiChanPublisher
{
//public HouseDelegateHandler FindHouseEvent;
public event HouseDelegateHandler FindHouseEvent;// 声明一个事件
public static string BuyerDemand
{
set;
get;
}
public void PublisherHouseInfo()
{
Console.WriteLine("深圳某某房地产中介发布房源信息:拥有大量优势房源,有意者请联系:xxxxxxx");
}
public void FindHouse() {
//做其他事情...
if (FindHouseEvent != null)//如果有买房者委托了中介找房
{
FindHouseEvent(BuyerDemand);
Find();//在已有的房源中找匹配的房子...
}
}
public void Find()
{
Console.WriteLine("(深圳某某房地产中介)只花了一小会工夫房子就找到了合适的房子.");
}
}
//定义事件订阅者
public class BuyerSubscriber
{
public string BuyerDemand
{
set{FangDiChanPublisher.BuyerDemand =value;}
}
public void BuyHouse(string demand)
{
Console.WriteLine("买房者跟房地产中介提出的需求:{0}",demand);
}
}