Considerate queste classi:
public interface IMyInterface
{
void Method1();
}
public class ClassA:IMyInterface
{
public void Method1()
{
Console.WriteLine("ClassA.Method1");
}
}
public class ClassB:ClassA
{
new public void Method1()
{
Console.WriteLine("ClassB.Method1");
}
}
Considerate questo codice:
IMyInterface a = new ClassA();
a.Method1();
IMyInterface b = new ClassB();
b.Method1();
Console.ReadLine();
per quale motivo il risultato è questo?
ClassA.Method1
ClassA.Method1
Sembra che il runtime cerca a ritroso la classe che implementa esplicitamente l'interfaccia per eseguire il metodo corrispondente, ma non è il comportamento che ci si aspetta. Ovviamente implementando l'interfaccia anche in ClassB il tutto ritorna normale.
Ci ho perso 30 minuti oggi... :-(