I typically name my C# interfaces as IThing
. I'm creating an extension method class for IThing
, but I don't know what to name it. On one hand, calling it ThingExtensions
seems to imply it is an extension class to some Thing
class instead of to the IThing
interface. It also makes the extension class be sorted away from the interface it extends, when viewing files alphabetically. On the other hand, naming it IThingExtensions
makes it look like it is an interface itself, instead of an extension class for an interface. What would you suggest?
Edit: there is not a Thing
class that implements IThing
, in response to some of the comments.
I definitely prefer the name ThingExtensions
over IThingExtensions
. The reason being that to most programmers an I
prefix on a type implies that it is an interface. This is both a very common pattern and part of the .Net Design Guidelines.
Adding an I
prefix for the extension method case breaks both assumptions and established guidelines.
There is also precedence for this in the Base Class Library. The majority of the extension methods available for IEnumerable
are contained in the type Enumerable
.