以下是我個人的看法,但對我來說似乎(顯然)是合理的; 如果我們仔細研究如何使用.net和v studio工作,看起來泛型類型符號似乎泄漏了一些「美」。
List<string> lst = new List<string>();
lst.Add("hello world");
雖然上面的代碼非常簡單,通過INTELLI意義上的事件處理程序的「外觀和感覺」犯規似乎是明確的直截了當和很好的支持。默認的智能支持只會提示EventHandler,而不是通用的。此外,該符號只是看起來awfull:
private event EventHandler<MyClass> SomeEvent;
private event EventHandler<AnotehrClass> OtherEvent;
privete event EventHandler<MoreClass> MoreEvents;
雖然overviewing的代碼,你會讀「事件處理程序」每次和你的想法可能會連接這些代表,怎麼一回事,因爲你正在使用他們的名字,以確定類型的關係。
另一方面,也可能有一個更低技術含量和更技術/邏輯的解釋:
首先,你總是在處理方法中得到一個發件人對象。雖然這初看起來似乎有用 - 這是大麥使用過的。
此外,您的論據必須從EventArgs中派生出來,這可能會令人討厭,有時甚至因使用現有組件而不可避免。
除了典型的泛型(例如IList/List)之外,你有可能使用更抽象的類型(比如接口)或者只是簡單的類型(比如double)。
最後但並非最不重要的是microsoft引入了那些符號規則/建議 - 對於路由事件的例子,規則可能會說它的類型是「標記的」,因爲它的名字盯着單詞「路由」。雖然事件本身的名稱表示名稱以「預覽」開始。
正如我提到的:這只是我的意見,所以不要怪我;)
我懷疑引進事件處理程序的''只是時機不對。在它被引入的時候,另一種模式(明確命名的代表)已經確立,並開始向通用代表類型轉變,可能會被視爲造成更大的混亂(通過導致困惑的程序員問 - 「那是什麼委託再次調用?'FooEventHandler'或'EventHandler '?「_) - 這讓我很好奇,是否會轉向'IEvent '(由F#和Rx框架引入)。 –
stakx
2010-11-12 06:58:47
WPF於2003年7月開始,在仿製藥發佈之前。當然,Windows窗體也是如此。 – 2010-11-12 14:54:29