Sto tentando di aggiornare la memoria ma non riesco a trovare le risposte con Google.Converti classe derivata in classe base
public class BaseClass
{
public virtual void DoSomething()
{
Trace.Write("base class");
}
}
public class DerivedClass : BaseClass
{
public override void DoSomething()
{
Trace.Write("derived class");
}
}
Se creo un'istanza della classe derivata, come faccio a convertirlo alla sua classe base in modo che quando si chiama DoSomething(), utilizza unico metodo della classe base?
Un cast dinamico chiama ancora metodo sottoposto a override della classe derivata:
DerivedClass dc = new DerivedClass();
dc.DoSomething();
(dc as BaseClass).DoSomething();
uscita: "classe derivata"
tipo di sconfitte lo scopo di eredità, di solito nella vostra esclusione però si sarebbe richiamare manualmente 'base.DoSomething (), ma a meno che tu possa essere in grado di fare qualcosa con la riflessione. –
Ouch, ho pensato che sarebbe stato qualcosa di semplice che ho trascurato. Grazie – Levitikon
possibile duplicato di [Come richiamare (non virtualmente) l'implementazione originale di un metodo virtuale?] (Http://stackoverflow.com/questions/3378010/how-to-invoke-non-virtually-the-original-implementation -di-un-metodo-virtuale) – Ani