In some ways I do agree. However, if the programmers abuses this technology, then just simply means that those programmers did not design their solution correctly. Take the following in consideration (Just an example): // This is a normal way to print out hello world. // Let me use a static class that does this for me. (again, just an example.) public void Main(string[] args) { Console.WriteLine("Hello World."); } ----------- // The normal way. public static class StringHelper { public static void WriteToConsole(string str) { Console.WriteLine(str); } } public void Main(string[] args) { // Here I used the static class directly. StringHelper.WriteToConsole("Hello World."); } ----------- // The extention way. public static class StringHelper { public static void WriteToConsole(this string str) { Console.WriteLine(str); } } public void Main(string[] args) { // Here I'm using the extention. "Hello World.".WriteToConsole(); } So as you can see.. I believe that extention methods is nothing more than just away to help better your code. If you abuse this, then simply, it means that you can not design your solution correctly. I have used extention methods a lot of times with MonoRail's testing and it works much easier and much more friendlier than calling a static class over and over again.
Assumption is the mother of all f*ck ups. (^_^)