如何分组扩展方法?

时间:2011-03-02 14:54:20

标签: c# .net refactoring extension-methods

我有一个静态类,有各种类型的扩展方法。是否有任何实用程序或方法将其拆分为几个类 - 每个目标类型的单独类。

2 个答案:

答案 0 :(得分:5)

从“干净代码”的角度来看,将各种扩展方法放到不同的类中是一个好主意,但扩展方法的主要“分组”通过将它们放入不同的命名空间来实现。原因是通过“使用”适当的命名空间可以获得扩展方法。

将不同的扩展方法组放入不同的命名空间是个好主意,因为您可能会遇到冲突的扩展方法。如果发生这种情况,并且每个扩展方法的逻辑组都在细粒度的命名空间中,您应该能够通过简单地删除其中一个using语句来解决冲突,从而保留using语句,包含您真正想要的扩展方法。

以下是一些最佳做法的链接:

http://blogs.msdn.com/b/vbteam/archive/2007/03/10/extension-methods-best-practices-extension-methods-part-6.aspx

答案 1 :(得分:0)

我有另一种分组方式:

public class StringComplexManager
{
    public StringComplexManager(String value)
    {
        Value = value;
    }

    public String Value { get; set; }
}

public static class StringComplexExtensions
{
    public static StringComplexManager ComplexOperations(this String value)
    {
        return new StringComplexManager(value);
    }

    public static int GetDoubleLength(this StringComplexManager stringComplexManager)
    {
         return stringComplexManager.Value.Length * 2;
    }
}

用法是:

string a = "Hello"
a.ComplexOperations().GetDoubleLength()

ComplexOperation()对扩展方法进行分组并缩小intellisense范围,这样如果您最初有数百个字符串扩展方法,那么现在只能在intellisense中看到一个。