【问题标题】:Organizing Extension Methods [closed]组织扩展方法[关闭]
【发布时间】:2008-09-18 20:41:26
【问题描述】:

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

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

是我把它弄得太复杂了还是有意义?

【问题讨论】:

    标签: c# extension-methods code-organization


    【解决方案1】:

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

    通常,我的解决方案中有某种“主程序集”,可提供大部分共享功能(如扩展方法)。为了便于讨论,我们将此程序集称为“框架”。

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

    最后,命名遵循您在问题中指定的行 - 以“Extensions”作为后缀的类型名称。这会产生这样的类层次结构:

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

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

    【讨论】:

    • 哇,幸好我在创建第一个扩展类之前遇到了这个答案。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 2011-04-03
      • 1970-01-01
      • 2018-09-06
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      相关资源
      最近更新 更多