CA1009 : Déclarer les gestionnaires d'événements correctement

Élément Valeur
ID de la règle CA1009
Category Microsoft.Design
Modification avec rupture Rupture

Cause

Un délégué qui gère un événement public ou protégé n'a pas la signature, le type de retour ou les noms de paramètres appropriés.

Notes

Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.

Description de la règle

Les méthodes du gestionnaire d'événements acceptent deux paramètres. Le premier est de type System.Object et se nomme « sender ». Il s'agit de l'objet qui déclenche l'événement. Le deuxième paramètre est de type System.EventArgs et se nomme « e ». Il s'agit des données qui sont associées à l'événement. Par exemple, si l’événement est déclenché chaque fois qu’un fichier est ouvert, les données d’événement contiennent généralement le nom du fichier.

Les méthodes de gestionnaire d’événements ne doivent pas retourner de valeur. Dans le langage de programmation C#, cela est indiqué par le type de retour void. Un gestionnaire d’événements peut appeler plusieurs méthodes dans plusieurs objets. Si les méthodes étaient autorisées à retourner une valeur, plusieurs valeurs de retour se produiraient pour chaque événement, et seule la valeur de la dernière méthode appelée serait disponible.

Comment corriger les violations

Pour corriger une violation de cette règle, corrigez la signature, le type de retour ou les noms de paramètres du délégué. Pour plus de détails, consultez l’exemple suivant.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L’exemple suivant montre un délégué adapté à la gestion des événements. Les méthodes qui peuvent être appelées par ce gestionnaire d’événements sont conformes à la signature spécifiée dans les instructions de conception. AlarmEventHandler est le nom de type du délégué. AlarmEventArgs dérive de la classe de base pour les données d’événement, EventArgset contient les données d’événement d’alarme.

using System;

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

CA2109 : Passez en revue les gestionnaires d'événements visibles

Voir aussi