Condividi tramite


CA1009: Dichiarare correttamente i gestori eventi

Articolo Valore
ID regola CA1009
Category Microsoft.Design
Modifica Interruzione

Causa

Un delegato che gestisce un evento pubblico o protetto non ha la firma corretta, il tipo restituito o i nomi dei parametri.

Nota

Questa regola è stata deprecata. Per altre informazioni, vedere Regole deprecate.

Descrizione regola

I metodi di gestione eventi accettano due parametri. Il primo è di tipo System.Object e è denominato 'sender'. Corrisponde all'oggetto che ha generato l'evento. Il secondo parametro è di tipo System.EventArgs ed è denominato 'e'. Questi sono i dati associati all'evento. Ad esempio, se l'evento viene generato ogni volta che viene aperto un file, i dati dell'evento in genere contengono il nome del file.

I metodi del gestore eventi non devono restituire un valore. Nel linguaggio di programmazione C# questo è indicato dal tipo voidrestituito . Un gestore eventi può richiamare più metodi in più oggetti. Se i metodi fossero autorizzati a restituire un valore, si verificherebbero più valori restituiti per ogni evento e solo il valore dell'ultimo metodo richiamato sarebbe disponibile.

Come correggere le violazioni

Per correggere una violazione di questa regola, correggere la firma, il tipo restituito o i nomi dei parametri del delegato. Per informazioni dettagliate, vedere l'esempio seguente.

Quando eliminare gli avvisi

Non escludere un avviso da questa regola.

Esempio

Nell'esempio seguente viene illustrato un delegato adatto alla gestione degli eventi. I metodi che possono essere richiamati da questo gestore eventi sono conformi alla firma specificata nelle linee guida per la progettazione. AlarmEventHandler è il nome del tipo del delegato. AlarmEventArgs deriva dalla classe base per i dati dell'evento, EventArgse contiene i dati degli eventi di allarme.

using System;

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

CA2109: Controllare i gestori di eventi visibili

Vedi anche