2009-07-24 35 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開發人員的決定中提供解釋,那將是非常好的。

相關問題