为什么通用的EventHandler <TArgs>如此使用不足?

Bra*_*ith 11 c# generics events delegates

.NET 2.0添加了EventHandler<TArgs>通用委托类型,以简化编写自定义事件的过程; 而不是必须定义一个EventArgs类及其相应的委托(例如MyEventArgsMyEventHandler),您只需要编写args类.

请记住,为什么这个委托类型在.NET Framework中几乎没有出现?我知道大多数核心API是在引入泛型之前开发的,但即使在像WPF这样的框架的新部分中,它们也选择明确定义委托类型; 例如,RoutedEventHandler而不是EventHandler<RoutedEventArgs>.

泛型事件处理程序委托是否存在固有的错误?我经常使用它,我担心与内置类相比,我的代码看起来很不合适.

Jon*_*len 7

只是历史的意外.如果我们在.NET 1中使用泛型,那么大多数其他代表将不存在.


Jon*_*eet 5

我不认为它有任何问题.它在该构架的一些位置使用......在GeoCoordinateWatcher.Position事件中,只是作为一个随便举个例子.

这是一个有点笨拙看到代码不是像一个特定的类型名称RoutedEventHandler-作为你要使用RoutedEventHandler一个很多在WPF/Silverlight的,也许这就是为什么MS决定给它自己的类型.