我一直在愉快地使用自定义委托类型和通用编写事件Action
委托类型,没有真正考虑我在做什么。
我有一些很好的扩展助手Action
and EventHandler
这使我倾向于使用那些预定义的委托类型而不是我自己的委托类型,但除此之外......
除了惯例之外还有其他充分的理由支持吗EventHandler
and EventHandler<T>
超过自定义委托类型或通用类型Action
委托类型?
签名的主要优点EventHandler<T>
为你的每个成员使用一个参数EventArgs
是你可以添加额外的属性到你的EventArgs
而不破坏兼容性。
IMO这是最重要的论点。能够扩展你的EventArgs
不破坏订阅代码非常好。当然,您可以使用任何使用某种属性包参数而不是每个属性一个参数的签名来实现相同的目的。
然后就有了方差,EventHandler<Base>
可转换为EventHander<Derived>
,所以你可以写一个带有参数的EventHandlerEventArgs
并且它可以订阅具有更具体的事件EventArgs
.
扩展方法是另一个优点,但您已经提到过。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)