Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿donde poner la llamada al método base al hacer override en C#?

Iniciado por XÑA, 05 de Febrero de 2014, 12:24:47 PM

« anterior - próximo »

XÑA

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.




Vicente

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 :(

XÑA

¿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.... ;)

Vicente

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

Gallo

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.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.