我应该使用EventHandler <T>和/或EventArgs委托模式吗?

The*_*uck 9 c# events delegates event-handling

阅读我的C#书,它讨论了在MS喜欢的模式中使用事件/委托(我假设我认为事件相当于没有成员变量访问权限的公共委托):

public delegate Something(object o, EventArgs e)
Run Code Online (Sandbox Code Playgroud)

然后继续解释EventArgs<T>哪些基本上消除了委托声明的需要:

public EventHandler<SomeEventArgs> events
Run Code Online (Sandbox Code Playgroud)

(我认为)

private delegate Something(object o, SomeEventArgs e);

public event Something events;
Run Code Online (Sandbox Code Playgroud)

使用它是个好主意EventHandler吗?我可以看到为什么发送它object可能是有用的,但不是所有的时间 - 而且很多时候,EventArgs可能会变得很烦人.

Cha*_*ion 9

微软肯定推出了一些很好的模式,这些模式使得使用C#成为一种愉快的体验.话虽这么说,我建议您编写事件处理程序以方便您的客户端代码,而不是为了满足模式而编写大量代码.

delegate void ClientMessageHandler(IClient client, IMessage message);
Run Code Online (Sandbox Code Playgroud)

  • @The Duck - 不同之处在于,如果不检查文档,你就不能确定`sender`是什么.事件提升者还必须初始化一个`EventArgs`对象,以包装`IMessage`实例.该代表签名不言自明. (2认同)