Eventi nei web controls

di Cristian Civera, in .NET,

Questa è una piccola osservazione. Avevo notato infatti più volte come gestivano gli eventi dei controlli del Framework ma non avevo mai approfondito la cosa.

Solitamente, e anche sui libri, per ogni evento o si dichiara una variabile pubblica del nostro handler e si aggiunge la chiave event:

public event EventHandler MioEvento;

oppure se ne dichiara uno privato senza la parola chiave event e si creano a mano i metodi per aggiungere o togliere un handler all'evento (utile se non lo si vuole serializzare):

private EventHandler _mioEvento;

public event MioEvento
{
add {
_mioEvento += value;
}
remove {
_mioEvento -= value;
}
}

Il risultato del compilatore, in entrambi i casi è il medesimo. Questa tecnica l'ho illustrata anche nel mio articolo per lo sviluppo di webControl.

Il Framework usa però un altro metodo. La classe base Control ha una proprietà indicizzata Events che restituisce un handler in base ad una chiave di tipo object.
In pratica invece di avere tante variabili private quanti sono gli eventi, abbiamo una collezione. Faremo quindi:

public event MioEvento
{
add {
base.Events.AddHandler("mioEvento", value);
}
remove {
base.Events.RemoveHandler("mioEvento", value);
}
}

Qui abbiamo utilizzato una stringa come chiave ma il framework usa delle variabili statiche di tipo object.

Sinceramente non so quale sia l'utilità di questo approccio, ma è da tenere comunque in considerazione se si vuole restare in conformità al Framework.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese