Extension methods versus inheritance

djcouchycouch picture djcouchycouch · Jul 15, 2009 · Viewed 13.6k times · Source

Are there rules of thumb that help determine which to use in what case? Should I prefer one over the other most times?

Thanks!

Answer

womp picture womp · Jul 15, 2009

Extension methods are useful, but they are harder to discover through the IDE than regular methods, since they are not attached to the original class and there are no clues as to where the code for them might reside. There are some best practice suggestions as to where to put them and how to name them, but these are only guidelines and there is no guarantee that someone will follow them.

Usually you would use extension methods if you are only adding functionality to a well known, well used class or interface such as the .Net base classes, that you don't have access to the code for. Extension methods also have the constraint in that you not only have to have the original assembly, you have to have the assembly with the extension methods in it, which must be understood by consumers of your code.

Using inheritance will allow you to add, remove or override functionality, and ensure that it is always present with the class when you build it.