Share via


CA1009: Declarar los controladores de evento correctamente

Elemento Valor
RuleId CA1009
Category Microsoft.Design
Cambio importante Problemático

Causa

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

Nota

Esta regla está en desuso. Para más información, consulte Reglas en desuso.

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 llama "sender". Éste es el objeto que provocó el evento. El segundo parámetro es de tipo System.EventArgs y se llama "e". Estos son los datos están asociados a este evento. Por ejemplo, si el evento se genera cada vez que se abre un archivo, los datos del evento normalmente contienen el nombre del archivo.

Los métodos del controlador de eventos no deben devolver un valor. En el lenguaje de programación de C#, esto se indica mediante el tipo de valor devuelto void. Un controlador de eventos puede invocar varios métodos en varios objetos. Si se permitiera que los métodos devolvieran un valor, se producirían varios valores devueltos para cada evento y solo estaría disponible el valor del último método que se invocó.

Cómo corregir infracciones

Para resolver una infracción de esta regla, corrija la firma, el tipo de valor devuelto o los nombres de parámetro del delegado. Para más información, consulte el ejemplo siguiente.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla.

Ejemplo

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

using System;

namespace DesignLibrary
{
   public class AlarmEventArgs : EventArgs {}
   public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);
}

CA2109: Revisar los controladores de eventos visibles

Vea también