Share via


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);
}

相关规则

CA2109:检查可见的事件处理程序

请参见

参考

System.EventArgs

System.Object

概念

事件和委托