Hola amigos, a ver que os parece esto.
Yo tengo un método virutal
public virtual void OnDraw()
{
}
Y ahora lo heredo en otra clase
public override void OnDraw()
{
base.OnDraw();
Cositas
}
Bien, mi duda es...¿Hay alguna norma que te diga que es mejor llamar al base al principo o al final?
Al final sería así:
public override void OnDraw()
{
Cositas
base.OnDraw();
}
¿y porqué esta pregunta? Porqué si quiero 'normalizar' mi código, me gustaría que TODOS los overrides se trataran igual, porqué ahora mismo siempre tengo dudas de si el base debo ponerlo antes o después y en algunos casos lo programa para que sea antes o después.
Aqui hay una explicación
http://stackoverflow.com/questions/3152996/how-to-properly-override-a-base-class-method (http://stackoverflow.com/questions/3152996/how-to-properly-override-a-base-class-method)
Como dicen en SO este problema no tiene una solucion unica. A veces hay que llamar a base al principio, a veces al final, a veces no hay que llamarlo... Depende de la clase de la que estes heredando :(
¿Y no podrían poner en el método un flag?
public void override-before OnAction()
{
}
public void override-After OnAction()
{
}
En fin, supongo que a veces nos pasamos y nos pensamos que los que desarrollan lenguajes son unos tios a prueba de fallos y que conocen perfectamente el futuro.... ;)
No es cosa del lenguaje, es cosa de quien disene la clase de la que heredas. No hay mas remedio que leer la doc y tener cuidado :p
Esa premisa responde unicamente a una necesidad de negocio, no hay una manera técnica correcta o incorrecta de hacerlo. Si requieres realizar algo antes de su funcionalidad base lo haces, si ha de ser despues pues despues, y no tiene por que ser una u otra, puedes no llamar al base si no lo requieres, o llamarlo en medio, según la necesidad.