您如何组织您的扩展方法?假设我有对象类和字符串类的扩展,我很想将这些扩展方法分成 IE 类:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

我是否让这太复杂了或者这有意义吗?

有帮助吗?

解决方案

我使用命名空间和类名的组合来组织扩展方法,这与您在问题中描述的方式类似。

一般来说,我的解决方案中有某种“主程序集”,它提供了大部分共享功能(如扩展方法)。为了讨论方便,我们将这个程序集称为“框架”。

在框架程序集中,我尝试模仿具有扩展方法的事物的名称空间。例如,如果我扩展 System.Web.HttpApplication,我将有一个“Framework.Web”命名空间。位于“System”命名空间中的“String”和“Object”等类将转换为该程序集中的根“Framework”命名空间。

最后,命名按照您在问题中指定的方式进行 - 类型名称以“Extensions”作为后缀。这会产生如下的类层次结构:

  • 框架(命名空间)
    • Framework.ObjectExtensions(类)
    • Framework.StringExtensions(类)
    • Framework.Web(命名空间)
      • Framework.Web.HttpApplicationExtensions(类)

好处是,从维护的角度来看,以后很容易找到给定类型的扩展方法。

其他提示

我有两种组织我使用的扩展方法的方法,

1)如果扩展特定于我正在处理的项目,那么我将其保留在同一个项目/程序集中,但在其自己的命名空间中。

2)如果扩展是一种我可以或正在其他项目中使用它的扩展,那么我将它们分离在一个通用的扩展程序集中。

要记住的最重要的事情是,我将使用它们的范围是什么?如果我牢记这一点,组织它们并不难。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top