Ogni volta che sto definendo i miei eventi personali, utilizzo uno schema come il seguente (che io credo è il modo in cui MSDN consiglia di 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 cliente deve solo iscriversi all'evento e funziona automaticamente.
Tuttavia, è logico passare il parametro EventArgs e
, in particolare con una classe che utilizza EventHandler per aumentare i suoi eventi, poiché la base EventArgs non ha dati, solo EventArgs.Empty
.
Sarebbe considerato un passo falso cambiarlo in questo?
protected void OnValueChanged()
{
if (ValueChanged != null)
ValueChanged(this, EventArgs.Empty);
}