estoy tratando de refrescar mi memoria, pero no puede encontrar respuestas con Google.Convertir a clase base
public class BaseClass
{
public virtual void DoSomething()
{
Trace.Write("base class");
}
}
public class DerivedClass : BaseClass
{
public override void DoSomething()
{
Trace.Write("derived class");
}
}
Si creo una instancia de la clase derivada, ¿cómo convertirlo a su clase base, de manera que cuando se llama HacerAlgo(), se utiliza el método de la clase base única?
Un elenco dinámico todavía llama método reemplazado de la clase derivada:
DerivedClass dc = new DerivedClass();
dc.DoSomething();
(dc as BaseClass).DoSomething();
salida: "clase derivada"
tipo de derrotas el propósito de la herencia, por lo general en su anulación, aunque debe invocar manualmente 'base.DoSomething () 'pero salvo que puedas hacer algo con reflexión. –
Ouch, pensé que sería algo simple que pasé por alto. Gracias – Levitikon
posible duplicado de [Cómo invocar (no virtualmente) la implementación original de un método virtual?] (Http://stackoverflow.com/questions/3378010/how-to-invoke-non-virtually-the-original-implementation -of-a-virtual-method) – Ani