interface IA { void f(int i); }
interface IB { void f(int i); }
abstract class FooBase { public abstract void f(int i); }
class FooDeriv : FooBase, IA, IB {
void IA.f(int i) { System.Console.WriteLine("IA.f({0})", i); }
void IB.f(int i) { System.Console.WriteLine("IB.f({0})", i); }
public override void f(int i) {
System.Console.WriteLine("f({0})", i);
}
}
class Program {
static void Main() {
FooDeriv refImpl = new FooDeriv();
FooBase refAbst = (FooBase)refImpl;
IA refA = (IA)refImpl;
IB refB = (IB)refImpl;
refImpl.f(1);
refAbst.f(2);
refA.f(3);
refB.f(4);
}
}