委托一

委托一

Delegate 委托,用于传递方法的引用(A delegate type represents references to methods with a particular parameter list and return type)。

       用常用的观察者模式来说明一下事件委托过程。

第一步:创建一个委托TestDelegate,包含两个参数,无返回值。

/// <summary>
/// 定义委托:用于传递委托方法地址
/// </summary>
/// <param name="sender"></param>
/// <param name="e">委托数据为bool型</param>
public delegate void TestDelegate(object sender, bool e);

 

第二步:创建一个发布者:Test,用于发布消息。

/// <summary>
/// 发布消息类
/// </summary>
public class Test
{
/// <summary>
/// 定义事件委托字段
/// </summary>
public event TestDelegate OnTestHandler;
/// <summary>
/// 发布消息的方法
/// </summary>
public void DoSomeThing()
{
//发布消息
OnTestHandler(this, true);
}
}

第三步:定义方法,用于接受消息,并提供方法引用。

/// <summary>
/// 定义方法:观察者(订阅者)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void OnTestChanged(object sender, bool e)
{
Console.WriteLine(sender.ToString()+Environment.NewLine+ e.ToString());
Console.Read();
}

第四步:订阅事件

Test t = new Test();
t.OnTestHandler += new TestDelegate(OnTestChanged);//订阅消息

第五步:发布消息

  t.DoSomeThing();

运行:

 

posted @ 2017-06-06 15:18  ldldavid  阅读(120)  评论(0编辑  收藏  举报