¿Cuándo debe uno hacer lo siguiente?Cuándo debe anular OnEvent en lugar de suscribirse al evento al heredar
class Foo : Control
{
protected override void OnClick(EventArgs e)
{
// new code here
}
}
¿Al contrario de esto?
class Foo : Control
{
public Foo()
{
this.Click += new EventHandler(Clicked);
}
private void Clicked(object sender, EventArgs e)
{
// code
}
}
Estoy de acuerdo, anular ftw – mmcdole
Curiosamente, las directrices de diseño establecen que cuando se crea un OnFoo virtual () método, el evento Foo correspondiente debe dispararse incluso si una clase descendente no llama a base.OnFoo()! Sin embargo, sería bastante incómodo hacerlo realidad. –
@Matt: vacío privado RaiseFoo() { /* Llamar a OnFoo para las clases derivadas */ this.OnFoo(); /* Raise foo event (funciona incluso si base.OnFoo nunca es invocado por clases derivadas) */ ... } virtual protegido vacío OnFoo() {/ * no hace nada * /} –