.NET 2.0增加了EventHandler<TArgs>
泛型委托类型,以简化编写自定义事件的过程;不需要定义一个EventArgs
类及其对应的委托(例如MyEventArgs
和MyEventHandler
),只需编写args类即可。
有鉴于此,为什么这个委托类型在.NET Framework中几乎不见踪影呢?我知道大多数核心API是在引入泛型之前开发的,但即使是像WPF这样的新框架部分,他们也选择了显式定义委托类型,例如RoutedEventHandler
而不是EventHandler<RoutedEventArgs>
。
泛型事件处理程序委托是否存在某些固有问题?我经常使用它,担心我的代码与内置类相比显得非常不协调。
EventHandler<T>
只是时机不佳。当它被引入时,另一种模式(显式命名的委托)已经得到了确认,并且开始向通用委托类型的转变可能会被视为制造更大混乱的行为(因为会导致困惑的程序员问:“那个委托叫什么来着?FooEventHandler
还是EventHandler<Foo>
?”)。这让我很好奇,是否向IEvent<T>
(由F#和Rx框架引入)的转变会奏效。 - stakx - no longer contributing