2011-03-02 45 views
5

我有一堆静态类与各种类型的扩展方法。是否有任何实用工具或将其分成几个类的方法 - 为每个目标类型单独分类。如何分组扩展方法?

+0

嗨,我会定义一个不同的类,为每种类型扩展名为typeExtensions,如果它们不是太多,我会将所有这些类保留在同一个文件和命名空间中。 – 2011-03-02 14:56:26

回答

5

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

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

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

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

+0

感谢您的回复。 – Peter17 2011-03-02 14:56:54

+0

+1好链接,谢谢! – 2011-03-02 15:01:07

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中看到一个。