using System; class Class1 { } class Class2 { public void Method1(string s) { Console.WriteLine("Class2.Method1"); } } class Class3 { public void Method1(object o) { Console.WriteLine("Class3.Method1"); } } class Class4 { public void Method1(int i) { Console.WriteLine("Class4.Method1"); } } static class Extensions { static public void Method1(this object o, int i) { Console.WriteLine("Extensions.Method1"); } static void Main() { new Class1().Method1(12); // Extensions.Method1 is called new Class2().Method1(12); // Extensions.Method1 is called new Class3().Method1(12); // Class3.Method1 is called new Class4().Method1(12); // Class4.Method1 is called } }