Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
TypeName |
UseEventsWhereAppropriate |
CheckId |
CA1030 |
Category |
Microsoft.Design |
Breaking Change |
Non sostanziale |
Causa
Un nome di metodo pubblico, protetto o privato inizia con uno dei seguenti elementi:
AddOn
RemoveOn
Fire
Raise
Descrizione della regola
Questa regola rileva i metodi che presentano nomi comunemente utilizzati per gli eventi. Gli eventi seguono il modello di progettazione Observer o Publish-Subscribe, sono utilizzati quando una modifica dello stato in un oggetto deve essere comunicata ad altri oggetti. Se un metodo viene chiamato in risposta a una modifica dello stato chiaramente definita, il metodo deve essere richiamato da un gestore eventi. Gli oggetti che chiamano il metodo devono generare eventi anziché chiamare direttamente il metodo.
Alcuni esempi comuni di eventi si trovano nelle applicazioni di interfaccia utente in cui un'azione dell'utente quale la scelta di un pulsante causa l'esecuzione di un segmento di codice. Il modello di evento .NET Framework non si limita alle interfacce utente, deve essere utilizzato ogni volta che è necessario comunicare modifiche dello stato a uno o più oggetti.
Correzione di violazioni
Se il metodo viene chiamato quando lo stato di un oggetto viene modificato, è opportuno provare a modificare la progettazione in modo da utilizzare il modello di evento .NET Framework.
Esclusione di avvisi
Escludere un avviso da questa regola se il metodo non funziona con il modello eventi .NET Framework.
Esempio
Nell'esempio seguente viene illustrato un metodo che tenta di comunicare un cambiamento di stato (in questo caso che il tipo dichiarante, Book, è stato chiuso) richiamando un delegato.
using System;
namespace Samples
{
public delegate void ClosedCallback(Book book);
public class Book
{
private ClosedCallback _ClosedCallback;
// Violates this rule
public void AddOnClosed(ClosedCallback callback)
{
_ClosedCallback = callback;
}
public void Close()
{
_ClosedCallback(this);
}
}
}
La classe seguente corregge l'esempio precedente passando al modello eventi di .NET Framework.