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基类作为参数。