Ho cercato e non sono stato in grado di trovare alcuna soluzione al mio problema. Il mio scenario è molto semplice:base.Method() con più livelli di ereditarietà che non vengono chiamati?
public class A
{
public virtual void MethodOne()
{
Console.log("A");
}
}
public class B : A
{
public override void MethodOne()
{
base.MethodOne();
Console.log("B");
}
}
public class C : B
{
public override void MethodOne()
{
base.MethodOne();
Console.log("C");
}
}
Quello che sto cercando di fare è di avere un'istanza della classe C (noi assegniamo il nome 'instanceC') chiamare sia il metodo override del suo genitore, e il suo nonno. Quindi mi aspetto questo:
instanceC.MethodOne();
// Output:
// "A"
// "B"
// "C"
Ma invece sto ottenendo questo:
instanceC.MethodOne();
// Output
// "A"
// "C"
con metodo di classe di B viene saltato sopra. Non è possibile? Ho pensato che questo fosse l'intero punto dell'ereditarietà/polimorfismo. Grazie in anticipo!
Sei sicuro che C sia derivato da B e non A? – jure
Perchè C ovveride da B? vuoi ereditare da A. – Derek
Il tuo esempio funziona come previsto per me e stampa 'ABC' – Lee