Welcome

首页 / 软件开发 / .NET编程技术 / CLR笔记:10.事件

CLR笔记:10.事件2011-10-26 博客园 包建强事件也是方法。

定义一个事件成员意味着类型具有三种能力:

*类型的静态方法/实例方法可以订阅类型事件

*类型的静态方法/实例方法可以注销类型事件

*事件发生时通知已订阅事件的方法

.NET2.0的事件仍然是基于Win32的,只不过使用了Observer模式来实现,同时建立在Delegate机制之 上。

事件的设计步骤如下(基本上是Observer的实现步骤):

10.1 设计一个对外提供事件的类型

1.定义EventArgs或子类,用于存放附加信息:

定义一个类,继承于EventArgs,以EventArgs结束,包含一组私有字段以及相应的只读公共属性。

    public class NewMailEventArgs : EventArgs    {        private string from;        public string From        {            get { return from; }        }    }
这里,EventArgs基类在FCL中是这个样子的:

     [Serializable]    [ComVisible(true)]    public class EventArgs    {        // Summary:        //     表示没有事件数据的事件。        public static readonly EventArgs Empty;        public EventArgs();    }
大多数事件没有附加数据,那么就不用定义任何私有字段和属性,直接使用EventArgs基类作为参数。