我目前正在通过已经开发了大约一年的应用程序运行FxCop的过程。
我不确定的一条规则是UseGenericEventHandlersInstances。我理解如何实现它,但除了保存为每个自定义事件处理程序定义委托的步骤之外,没有真正看到好处。在我们的例子中,我们已经创建了这些委托,我想知道我们的事件处理程序是否有任何改变,或者只是禁用此规则。
在我有限的经验中,几乎所有FxCop规则似乎都遵循Microsoft和.NET框架。但是,在这种情况下并非如此。 .NET框架使用我们使用的传统方法,声明委托,至少对于我调查过的所有鼠标和keybaord事件处理程序。
没有人知道为什么微软会做或不做某事,但这进一步让我质疑这条规则的有效性和好处。
答案 0 :(得分:1)
您在最新版本的.NET BCL中看到的大多数非泛型委托都是在引入泛型之前创建的。更改预先存在的事件以使用EventHandler将是一个重大变化,删除可能由其他代码使用的公共 _ __ EventHandler委托也是如此。但是,有很多EventHandler用于BCL公开的新事件,因此假设Microsoft不遵守新代码规则是错误的。
在您的情况下,如果更改较旧的事件声明将是重大更改或值较低,您可以选择禁止现有的规则违规。当然,你也可以选择忽略规则,即使对于新事件,尽管我不确定为什么人们会这样做,因为遵循规则实际上避免了原始开发人员不必要的工作,同时增强了API的可用性。