DefineIMyInterface { System; IMyInterface { MethodB(); } } Extensions { System; DefineIMyInterface; Extension { MethodA( IMyInterface myInterface, i) { Console.WriteLine (); } MethodA( IMyInterface myInterface, s) { Console.WriteLine (); } MethodB( IMyInterface myInterface) { Console.WriteLine (); } } } ExtensionMethodsDemo1 { System; Extensions; DefineIMyInterface; A : IMyInterface { MethodB() { Console.WriteLine(); } } B : IMyInterface { MethodB() { Console.WriteLine(); } MethodA( i) { Console.WriteLine(); } } C : IMyInterface { MethodB() { Console.WriteLine(); } MethodA( obj) { Console.WriteLine(); } } ExtMethodDemo { Main([] args) { A a = A(); B b = B(); C c = C(); a.MethodA(1); a.MethodA(); a.MethodB(); b.MethodA(1); b.MethodB(); b.MethodA(); c.MethodA(1); c.MethodA(); c.MethodB(); } } }