0

我目前正在通过我们已经开发了大约一年的应用程序运行 FxCop。

我不确定的一条规则是 UseGenericEventHandlersInstances。我了解如何实现它,但并没有真正看到好处,除了节省必须为每个自定义事件处理程序定义委托的步骤。在我们的例子中,我们已经创建了这些委托,我想知道我们是否对更改事件处理程序有任何好处,或者应该禁用此规则。

在我有限的经验中,几乎所有 FxCop 规则似乎都遵循 Microsoft 和 .NET 框架。但是,在这种情况下,情况并非如此。.NET 框架使用我们使用过的传统方法,并声明委托,至少对于我研究过的所有鼠标和键盘事件处理程序而言。

没有人知道微软为什么做或不做某事,但这进一步让我质疑这条规则的有效性和好处。

4

1 回答 1

1

您在最新版本的 .NET BCL 中看到的大多数非泛型委托都是在引入泛型之前创建的。将预先存在的事件更改为使用 EventHandler 将是一项重大更改,就像删除可能由其他代码使用的公共_ __EventHandler 委托一样。但是,对于 BCL 公开的新事件,有相当多的 EventHandler 使用,因此假设 Microsoft 不遵守新代码规则是不正确的。

在您的情况下,如果更改较旧的事件声明将是一项重大更改或价值较低,您可以选择禁止现有的违反规则的行为。当然,即使对于新事件,您也可以选择忽略该规则,尽管我不确定为什么要这样做,因为遵循该规则实际上避免了原始开发人员的不必要工作,同时增强了 API 的可用性。

于 2012-03-27T13:02:56.593 回答