The upcoming release of the Framework Design Guidelines, 2nd Edition will have some guidance for implementing extension methods, but in general:
You should only define extension methods "where they make semantic sense" and are providing helper functionality relevant to every implementation.
You also should avoid extending System.Object as not all .NET languages will be able to call the extension method as an extension. (VB.NET for instance would need to call it as a regular static method on the static extension class.)
Don't define an extension method in the same namespace as the extended type unless you're extending an interface.
Don't define an extension method with the same signature as a "real" method since it will never be called.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…