更新:2007 年 11 月
| TypeName | DeclareEventHandlersCorrectly | 
| CheckId | CA1009 | 
| 类别 | Microsoft.Design | 
| 是否重大更改 | 是 | 
原因
处理公共事件或受保护事件的某委托没有正确的签名、返回类型或参数名称。
规则说明
事件处理程序方法采用两个参数。第一个参数是 System.Object 类型,名为“sender”。该参数是引发事件的对象。第二个参数是 System.EventArgs 类型,名为“e”。该参数是与事件关联的数据。例如,如果在每次打开文件时都引发事件,则事件数据通常包含文件名称。
事件处理程序方法不应返回值。在 C# 编程语言中,这是由 void 返回类型指示的。一个事件处理程序可以调用多个对象中的多个方法。如果允许这些方法返回值,则每个事件都将有多个返回值,并且只有调用的最后一个方法的值可用。
如何修复冲突
要修复与该规则的冲突,请更正该委托的签名、返回类型或参数名称。有关详细信息,请参见下面的示例。
何时禁止显示警告
不要禁止显示此规则发出的警告。
示例
下面的示例演示适合处理事件的委托。该事件处理程序可以调用的方法符合设计指南中指定的签名。AlarmEventHandler 是委托的类型名称。AlarmEventArgs 派生自事件数据的基类 EventArgs,它包含警报事件数据。
Imports System
Namespace DesignLibrary
   Public Delegate Sub AlarmEventHandler(sender As Object, e As AlarmEventArgs)
   Public Class AlarmEventArgs
      Inherits EventArgs
   End Class
End Namespace
using System;
namespace DesignLibrary
{
   public class AlarmEventArgs : EventArgs {}
   public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);
}
using namespace System;
namespace DesignLibrary
{
   public ref class AlarmEventArgs : public EventArgs {};
   public delegate void AlarmEventHandler(
      Object^ sender, AlarmEventArgs^ e);
}