Vorrei sapere se è possibile accedere al metodo virtuale di base utilizzando un oggetto di classe ereditante (che sovrascrive il metodo).Accesso al metodo virtuale della classe padre dall'assegnazione di oggetto classe figlio
So che questa non è una buona pratica, ma la ragione per cui voglio sapere questo è se è tecnicamente possibile. Non seguo questa pratica, chiedendo solo per curiosità.
Ho visto alcune domande simili ma non ho ottenuto la risposta che sto cercando.
Esempio:
public class Parent
{
public virtual void Print()
{
Console.WriteLine("Print in Parent");
}
}
public class Child : Parent
{
public override void Print()
{
Console.WriteLine("Print in Child");
}
}
class Program
{
static void Main(string[] args)
{
Child c = new Child();
//or Parent child = new Child();
child.Print(); //Calls Child class method
((Parent)c).Print(); //Want Parent class method call
}
}
Si prega di spiegare downvotes. Qualsiasi risposta a una domanda simile esistente (con risposta soddisfacente) su stackoverflow è una risposta accettabile. Grazie.
ho risposto praticamente la stessa domanda ieri, qui; http://stackoverflow.com/questions/14491513/calling-both-base-and-derived-methods/14491581#14491581 –
chiama in modo esplicito il metodo Print() della classe padre. Ovviamente, come hai notato, questa architettura è nel tentativo di invertire il comportamento polimorfico - non saggio –
@AdityaSihag; non funziona per i metodi sovrascritti. Solo 'nuovo', come da link sopra. –