Compartir a través de


CA1009: Declare los controladores de evento correctamente

Nombre de tipo

DeclareEventHandlersCorrectly

Identificador de comprobación

CA1009

Categoría

Microsoft.Design

Cambio problemático

Motivo

Un delegado que controla un evento público o protegido no tiene la firma, el tipo de valor devuelto o los nombres de parámetro correctos.

Descripción de la regla

Los métodos de control de eventos toman dos parámetros.El primero es de tipo System.Object y se denomina 'sender'.Éste es el objeto que provocó el evento.El segundo parámetro es de tipo System.EventArgs y se denomina 'e'.Estos son los datos están asociados a este evento.Por ejemplo, si se provoca el evento cuando se abre un archivo, los datos de evento contienen normalmente el nombre del archivo.

Los métodos de control de eventos no deben devolver un valor.En el lenguaje de programación C#, esto lo indica el tipo de valor devuelto void.Un controlador de eventos puede invocar varios métodos en varios objetos.Si los métodos pudieran devolver un valor, se devolverían varios valores por cada evento y solo estaría disponible el valor del último método invocado.

Cómo corregir infracciones

Para corregir una infracción de esta regla, corrija la firma, tipo de valor devuelto o los nombres de parámetro del delegado.Para obtener información detallada, vea los siguientes temas:

Cuándo suprimir advertencias

No suprima las advertencias de esta regla.

Ejemplo

En el siguiente ejemplo se muestra un delegado que es adecuado para el control de errores.Los métodos que puede invocar este controlador de eventos cumplen la firma especificada en las Instrucciones de diseño.AlarmEventHandler es el nombre de tipo del delegado.AlarmEventArgs deriva de la clase base para los datos de evento, EventArgs, y retiene los datos de evento de alarma.

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

Reglas relacionadas

CA2109: Revisar los controladores de eventos visibles

Vea también

Referencia

System.EventArgs

System.Object

Otros recursos

Eventos y delegados