Ogni volta che definisco i miei eventi, utilizzo uno schema come il seguente (che credo sia il modo consigliato da MSDN farlo):

public class MyEventClass { private bool _value; // Backing variable public bool Value { get { return _value; } set { if (value != _value) // Only raise event if value is changed/different { _value = value; OnValueChanged(EventArgs.Empty); } } } public event EventHandler ValueChanged; // Anything can subscribe to the event protected void OnValueChanged(EventArgs e) // Only this and children can invoke event { if (ValueChanged != null) ValueChanged(this, e); } } 

Quindi, il codice client deve solo iscriversi allevento e funziona automaticamente.

Tuttavia, funziona sembra complicato passare il parametro EventArgs e, in particolare con una classe che utilizza EventHandler per aumentare i propri eventi, poiché EventArgs di base non ha dati, solo EventArgs.Empty.

Sarebbe considerato un passo falso cambiarlo in questo?

protected void OnValueChanged() { if (ValueChanged != null) ValueChanged(this, EventArgs.Empty); } 

Commenti

  • Cosa ti fa male essere lì? Dovrai aggiungerlo di nuovo più tardi quando troverai la necessità di passare gli argomenti dellevento? Probabilmente …
  • Lho pensato solo come una comodità per risparmiarmi un po di fatica mentre scrivevo la classe. Ma ' hai assolutamente ragione in quanto potrebbe cambiare in seguito (probabilmente ha vinto ', ma comunque …), e sarebbe un cambiamento radicale, quindi potrei anche farlo bene la prima volta. Grazie!
  • In questo caso particolare, ' non è più normale utilizzare PropertyChangedEventArgs e -Handler e passare come argomento il nome della proprietà? O è solo un cattivo esempio?
  • Il mio codice potrebbe essere un cattivo esempio, ma stavo estraendo il mio design e le convenzioni di denominazione da alcune classi .NET, che utilizzano la nomenclatura EventArgs e -Changed predefinita. / li>

Risposta

È sbagliato? No. Le persone si lamenteranno del tuo codice? No.

Distruggerà uno sviluppatore impegnato per un paio di minuti mentre cerca di scoprire quali sono i parametri e se aiuteranno a risolvere il suo problema? Potrebbe essere ..

Renderà la tua classe più facile da usare …?

Standard e modelli sono utili perché sono facilmente riconoscibili e usati (o ignorati). Deviare dalle convenzioni dovrebbe essere fatto per uno scopo, non solo perché puoi. Questo si applica se si tratta di stile parentesi, nomi di parametri o elenco di argomenti. Fallo per un motivo, non solo perché si compila.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *