Use explicit implementation to remove ambiguity : Explicit Interface Implementation « Class « C# / CSharp Tutorial






using System; 
 
interface MyInterfaceA { 
  int Method(int x); 
} 
 
interface MyInterfaceB { 
  int Method(int x); 
} 
 
// MyClass implements both interfaces. 
class MyClass : MyInterfaceA, MyInterfaceB { 
 
  // explicitly implement the two Method()s 
  int MyInterfaceA.Method(int x) { 
    return x + x; 
  } 
  int MyInterfaceB.Method(int x) { 
    return x * x; 
  } 
 
  // call Method() through an interface reference. 
  public int MethodA(int x){ 
    MyInterfaceA a_ob; 
    a_ob = this; 
    return a_ob.Method(x); // calls MyInterfaceA 
  } 
 
  public int MethodB(int x){ 
    MyInterfaceB b_ob; 
    b_ob = this; 
    return b_ob.Method(x); // calls MyInterfaceB 
  } 
} 
 
class MainClass { 
  public static void Main() { 
    MyClass ob = new MyClass(); 
 
    Console.Write("Calling MyInterfaceA.Method(): "); 
    Console.WriteLine(ob.MethodA(3)); 
 
    Console.Write("Calling MyInterfaceB.Method(): "); 
    Console.WriteLine(ob.MethodB(3)); 
  } 
}
Calling MyInterfaceA.Method(): 6
Calling MyInterfaceB.Method(): 9








7.34.Explicit Interface Implementation
7.34.1.Interface member hiding
7.34.2.Explicit Interface Implementation
7.34.3.Explicit interface implementation and its own implementation
7.34.4.Explicitly implement an interface member
7.34.5.Use explicit implementation to remove ambiguity