CA1009: Declare los controladores de evento correctamente
TypeName |
DeclareEventHandlersCorrectly |
Identificador de comprobación |
CA1009 |
Categoría |
Microsoft.Design |
Cambio problemático |
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 Object y se denomina 'sender'.Éste es el objeto que provocó el evento.El segundo parámetro es de tipo 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