CA1009:正确声明事件处理程序
类型名 |
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);
}