【问题标题】:Is it possible to create nested namespaces? (so to speak)是否可以创建嵌套命名空间? (可以这么说)
【发布时间】:2014-06-08 11:01:21
【问题描述】:

我有一个有很多很多(非共享)方法的类。我想将它们组织成子类别,例如,而不是调用

(my class instance).BuildingComponentDoorCreate

我可以打电话

(my class instance).Building.Component.Door.Create

因为除了门之外还有其他组件,门特定的东西除了创建等方法之外还有其他方法。

我正在将这个类构建为一种框架,现在它使用起来感觉非常拥挤。另外,我不想为“建筑”和建筑内部的组件创建单独的类,因为它只会增加不必要的复杂性。

【问题讨论】:

  • 不必要的复杂化与否听起来Door 本身应该是一个类。如果您愿意,它可以存在于 Building.Component 命名空间中
  • 我认为(my class instance) 做得有点过分了。您可以使用嵌套的内部类来使用相同的语法,但是......如果您正在处理其他对象,它们应该是在命名空间中组织的自己的类。

标签: .net vb.net oop namespaces


【解决方案1】:

使用内部类,即现有类中的类。

我发现,除非您已经以这种方式组织了您的基础架构,并且需要将其分成组件,否则如果您已经将所有内容都包含在大师班中,那么它可能需要更多的工作。

深入 4 层也是一个非常大的项目分离,但子类化将不可避免地使您的代码更具可读性和组织性。因此,如果您要这样做,这确实是您的判断。

【讨论】:

    【解决方案2】:

    根据您问题的确切措辞,答案是“否”。

    如果您有一个变量x 是一个类的实例,并且您想在代码中编写x.<something>,那么<something> 必须是一个属性或公共字段。

    如果你可以允许括号,那么你也可以有方法,例如x.Something()。这可以是在类本身上声明的方法,也可以是来自另一个 static 类的扩展方法。

    在任何情况下,您的类实例后面的.<something> 都不能是命名空间。

    你说你的班级很拥挤;这表明您应该考虑创建更多类以更好地分离您的功能。这也是您能够按照您描述的方式组织它们的唯一方法。

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      相关资源
      最近更新 更多