我正在阅读
this页面,我注意到它是如何说这是标准指南:
The .NET Framework guidelines indicate that the delegate type used for an event should take two parameters,an “object source” parameter indicating the source of the event,and an “e” parameter that encapsulates any additional information about the event.
我可以理解在某些情况下如何让对象发送者有用,但我可以在其他情况下看到完全相反的情况.例如,
>如果处理该事件的班级不应该知道是谁解雇了该怎么办?耦合,凝聚力以及所有这些.
>就我而言,我已经将对象引用为成员变量.这就是我订阅活动的方式.它只会有一个实例,因此没有理由转换发送者对象而不仅仅是使用成员变量.
>在我的程序中,发件人对象根本不应该为客户端所知.很难解释我在做什么,但基本上我在一个库中有一个内部构造函数的类,该库也被该库中的另外两个类使用.我的客户端类正在订阅来自这两个类的事件,但事件最初是从客户端不应该知道的内部类调用的.
>这对事件处理程序的客户来说很困惑.库应该易于理解,在我的情况下,没有理由使用sender变量.没有.那为什么要包括它呢?
话虽如此,为什么微软表示事件处理程序应遵循这些指导原则?难道不总是最好的选择吗?
编辑:感谢大家的回复.我决定采用大多数人并使用EventHandler< T>我在这个图书馆的所有活动.