可以在父命名空间中的类访问子命名空间中的类

use*_*433 5 c# namespaces

我有一个Device名称空间的类Proj.Devices.此类Message是否可以访问名称空间中的类Proj.Devices.Messages.这两个类都在同一个项目中.我不是在问这是否可行,但这是否是一种不好的做法?

如果我将这个项目拆分为单独的项目,我认为循环引用会有问题但是这样可以吗?

编辑:我在命名空间命名指南中找到了这个

"嵌套命名空间应该依赖于包含命名空间中的类型.例如,System.Web.UI.Design中的类依赖于System.Web.UI中的类.但是,System.Web.UI中的类不依赖于System.Web.UI.Design中的类."

Joe*_*lly 9

我不能同意Morbia.命名空间不仅仅用于分组,它们是逻辑分离(组件),其中程序集是具体的分隔(层和关注点).

它们通常也被视为等级.从哲学上讲,层次结构中较低级的东西通过其父级存在,而父级可以在没有这个特定子元素的情

我认为这就是Core现在名称空间存在的原因.基本命名空间只是基础结构/基础.

如果子命名空间由其基本命名空间使用,则可以确保在大多数情况下存在相互依赖关系:这会显示架构风险.

应该避免因为:

  • 依赖疯狂:
    • 相互依赖
    • 没有子命名空间,您的基本命名空间不能存在
    • 如果没有这个子命名空间等,所有引用基本命名空间的东西都不可能存在......
  • 调试步骤将不太容易理解
  • 堆栈跟踪将不太容易理解

如果你不关心架构,那不是问题.但是,如果你问自己这个问题,你已经在考虑编写好的代码 - 这意味着新的用法不仅仅是为了你自己;) - .

这就是存在这种做法以避免高耦合的原因:

  • 接口
  • 扩展方法
  • 虚拟/覆盖

建筑是关于时间而不仅仅是美.在某种成熟度下,无架构代码的可维护性较差,可理解性较差且可扩展性较差.


Mor*_*bia 1

是的,他们可以,命名空间只是类的分组。不,这不是不好的做法,这是正常情况。

如果两个命名空间中的类相互引用,那么将它们放在单独的项目中并不是一个好主意,只要它们位于同一个项目中就可以了。