Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对扩展方法进行分组?_C#_.net_Refactoring_Extension Methods - Fatal编程技术网

C# 如何对扩展方法进行分组?

C# 如何对扩展方法进行分组?,c#,.net,refactoring,extension-methods,C#,.net,Refactoring,Extension Methods,我有一个静态类,其中包含一系列针对各种类型的扩展方法。是否有任何实用程序或方法将其拆分为几个类-每个目标类型都有单独的类 从“干净代码”的角度来看,将各种扩展方法放入不同的类是一个好主意,但是扩展方法的主要“分组”是通过将它们放入不同的名称空间来实现的。原因是扩展方法是通过“使用”适当的名称空间而可用的 将不同的扩展方法组放入不同的名称空间是一个好主意,因为可能会有冲突的扩展方法。如果发生这种情况,并且扩展方法的每个逻辑组都位于细粒度名称空间中,您应该能够通过简单地删除using语句中的一个来解

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

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

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

以下是一些最佳实践的链接:


我有另一种分组方式:

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

您好,我将为您扩展的每种类型定义一个不同的类,称为类似typeExtensions的类,如果这些类不是太多,我会将它们保留在同一个文件和名称空间中。