2009-07-24 39 views
0

自定义事件处理从How to: Publish Events that Conform to .NET Framework Guidelines为什么基础参数从EventArg

虽然你 定义类事件可以基于任何有效 委托类型,即使代表们 返回一个值,它通常是 推荐您使用 EventHandler将您的事件 基于.NET Framework模式,如以下示例中的 所示。

为什么?如何:

public delegate void GenericEventHandler<TType, TArgs>(TType sender, TArgs args); 
public event GenericEventHandler<SomeSender, SomeArg> SomeEvent; 

回答

2

主要使有特色(object sender, EventArgs e)任何方法可以处理你的事件。请记住,代表是变体(协变返回类型和逆变参数类型)。

+0

+1。你应得的,我不像这里的大多数人那样精心。 – 2009-07-24 19:57:56

1

只是为了使这是最新的:从.NET 4.5没有这样的约束。新的签名是:

[SerializableAttribute] 
public delegate void EventHandler<TEventArgs>(
    Object sender, 
    TEventArgs e 
) 

以前它是:

[SerializableAttribute] 
public delegate void EventHandler<TEventArgs>(
    Object sender, 
    TEventArgs e 
) 
where TEventArgs : EventArgs 

我找不到为什么这种变化。如果有人能够从.NET开发人员的决定中提供解释,那将是非常好的。

相关问题