也发布在这里,但没有真正的学术答案: 为什么命名空间类型不应该依赖于嵌套的命名空间类型?
如果我理解正确,重点是类型Product.Business.Modules.Module
可以依赖于Product.Business.Product
,但不能反过来,因为Product
它是Module
. 但是,看看我的项目结构,我违反了这个准则:
namespace Product.Business
{
using Modules;
class Product
{
public IEnumerable<Module> Modules { get; }
// Module is abstract, with many different kinds defined in Modules.
}
}
但是,我想扩展这个问题。
- 我在哪里可以找到支持该指南的支持信息?
- 为什么这是不好的做法?
- 让类型依赖于具有相同包含命名空间的其他命名空间的类型是否有效?(例如
Product.Business.Security
,取决于类型Product.Business.Modules
?
从某种意义上说,违反该准则会创建一种循环命名空间依赖关系,但我想更多地了解该准则的原因,而不仅仅是一揽子声明。我能找到的唯一其他信息来自链接的 Msdn 文章。这实际上可以显着改变类库的架构和布局。