组织扩展方法

时间:2020-03-06 14:23:24  来源:igfitidea点击:

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

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

我是说这太复杂了还是有意义?

解决方案

我可以使用两种方法来组织扩展方法,

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

2)如果扩展名是某种类型的扩展名,以便我也可以或者正在其他项目中使用它,那么我会将它们分隔在一个通用扩展名中。

要记住的最重要的事情是,我将在哪些范围内使用它们?如果我牢记这一点,对它们进行组织并不难。

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

通常,我的解决方案中有某种"主程序集",它提供了大多数共享功能(如扩展方法)。为了讨论起见,我们将此程序集称为"框架"。

在Framework程序集中,我尝试模仿具有扩展方法的事物的名称空间。例如,如果要扩展System.Web.HttpApplication,则将具有" Framework.Web"命名空间。位于"系统"名称空间中的诸如"字符串"和"对象"之类的类转换为该程序集中的根"框架"名称空间。

最后,命名沿我们在问题中指定的名称后缀" Extensions"的行进行。这将产生一个这样的类层次结构:

  • Framework.StringExtensions(类)

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