EventHandler应该始终用于事件吗?

And*_*ndy 4 c# events conventions

我一直在使用自定义委托类型和通用Action委托类型快乐地编写事件,而没有真正考虑我在做什么.

我有一些很好的扩展助手Action,EventHandler这使我倾向于使用那些预定义的委托类型而不是我自己的,但除此之外......

除了约定之外,是否有一个很好的理由支持EventHandlerEventHandler<T>优先于自定义委托类型或通用Action委托类型?

Cod*_*aos 7

签名EventHandler<T>比为每个成员使用一个参数的主要优点EventArgs是,您可以在EventArgs不破坏兼容性的情况下为您添加其他属性.
IMO这是最重要的论点.能够在EventArgs不破坏订阅代码的情况下扩展您的程度非常好.但是当然你可以使用任何使用某种property-bag参数的签名而不是每个属性的参数来实现相同的功能.

然后有方差,EventHandler<Base>可以转换为EventHander<Derived>,所以你可以用参数编写一个EventHandler,EventArgs它可以订阅更具体的事件EventArgs.

扩展方法是另一个优点,但你已经提到了.