Cada vez que anulo un método de una clase base, que no sea la implementación de este método, parece que tengo 3 opciones.¿Cómo "anular" correctamente un método de clase base?
1) Llame a base.Method(), y luego proporcione mi implementación.
2) Proporcionar mi aplicación y luego llamar base.Method()
3) acaba de proporcionar mi aplicación.
Recientemente, al utilizar una biblioteca, me he dado cuenta de algunos errores que se introdujeron debido a que no se implementó el método como esperaba la biblioteca. No estoy seguro de si eso es malo en parte de la biblioteca, o algo está mal en mi comprensión.
Voy a tomar un ejemplo.
public class ViewManager {
public virtual void Customize(){
PrepareBaseView();
}
}
public class PostViewManager {
public override void Customize(){
base.Customize();
PreparePostView();
}
}
public class PreViewManager {
public override void Customize(){
PreparePreView();
base.Customize();
}
}
public class CustomViewManager {
public override void Customize(){
PrepareCustomView();
}
}
Mi pregunta aquí es que ¿cómo podría un know clase hija (sin echar un vistazo a la implementación de la clase base) qué orden (u opción) está siendo esperado por la clase padre? ¿Hay alguna manera en la que la clase principal podría imponer una de las tres alternativas a todas las clases derivadas?
'PostViewManager',' PreViewManager', 'CustomViewManager' heredan de' ViewManager'? Si es así, debe editar el código. – LaTeX