using System;
public interface InterfaceA
{
void MethodA();
}
public interface InterfaceB : InterfaceA
{
new void MethodA(); // hides MethodA() in InterfaceA
}
public class MyClass : InterfaceB
{
void InterfaceB.MethodA()
{
Console.WriteLine("InterfaceB implementation of MethodA()");
}
public void MethodA()
{
Console.WriteLine("InterfaceA implementation of MethodA()");
}
}
class MainClass
{
public static void Main()
{
MyClass myClass = new MyClass();
Console.WriteLine("Calling myClass.MethodA()");
myClass.MethodA();
InterfaceB mySteerable = myClass as InterfaceB;
Console.WriteLine("Calling mySteerable.MethodA()");
mySteerable.MethodA();
InterfaceA myDrivable = myClass as InterfaceA;
Console.WriteLine("Calling myDrivable.MethodA()");
myDrivable.MethodA();
}
}
Calling myClass.MethodA()
InterfaceA implementation of MethodA()
Calling mySteerable.MethodA()
InterfaceB implementation of MethodA()
Calling myDrivable.MethodA()
InterfaceA implementation of MethodA()