Dato il seguente codice, c'è un modo per chiamare la versione di metodo X della classe A?Come posso chiamare l'implementazione di base di un metodo virtuale sottoposto a override?
class A
{
virtual void X() { Console.WriteLine("x"); }
}
class B : A
{
override void X() { Console.WriteLine("y"); }
}
class Program
{
static void Main()
{
A b = new B();
// Call A.X somehow, not B.X...
}
(Hi Solo per la cronaca, qualcuno eliminato il tag 'del stupido trucco che ho aggiunto, e poi qualcuno altrimenti ha cancellato il commento sottolineandolo, facendolo apparire come vorrei/ho bisogno di farlo. Sarebbe utile ricevere notifiche delle modifiche stupide che le persone sembrano voler fare su SO.) – mackenir
Chiamata AX() dall'interno di B è l'unica situazione in cui riesco a vedere che hai bisogno di chiamarlo una volta superato. Supponiamo che tu abbia un metodo di copia con i membri della classe base, quindi esegui l'override per aggiungere funzionalità di copia per i nuovi membri e chiamare base.copy() all'interno in modo che tutto venga copiato. – steviesama
Interessante, avrei pensato che potesse essere realizzato tramite la riflessione? – mhand