Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: XÑA en 05 de Febrero de 2014, 12:24:47 PM

Título: ¿donde poner la llamada al método base al hacer override en C#?
Publicado por: XÑA en 05 de Febrero de 2014, 12:24:47 PM
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.


Título: Re:¿donde poner la llamada al método base al hacer override en C#?
Publicado por: XÑA en 05 de Febrero de 2014, 01:25:54 PM
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)
Título: Re:¿donde poner la llamada al método base al hacer override en C#?
Publicado por: Vicente en 05 de Febrero de 2014, 04:11:11 PM
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 :(
Título: Re:¿donde poner la llamada al método base al hacer override en C#?
Publicado por: XÑA en 05 de Febrero de 2014, 08:30:43 PM
¿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.... ;)
Título: Re:¿donde poner la llamada al método base al hacer override en C#?
Publicado por: Vicente en 06 de Febrero de 2014, 03:11:37 AM
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
Título: Re:¿donde poner la llamada al método base al hacer override en C#?
Publicado por: Gallo en 06 de Febrero de 2014, 07:21:40 PM
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.