For a time I've been avoiding extension methods. Not because I'm opposed to using them but because of the 3.5 Framework.
A lot of the tools I own are designed to be very light weight tools that only require the user to have 2.0 installed on their machine. I find that the easier that tools are to install, the more likely people are to use them.
Extension methods require the ExtensionAttribute be available. Since the attribute is declared in a 3.5 Framework assembly it's not possible to use extension methods without the 3.5 framework. At least, that's what I thought up until I read an recent MSDN article.
You can simply define the ExtensionAttribute in your assembly and extension methods will start working. No references to the 3.5 framework required. It's a lightweight solution that adds the full power of extension methods to your program.
Namespace System.Runtime.CompilerServices Class ExtensionAttribute Inherits Attribute End Class End Namespace