我想组织我的程序集,以便我编写的代码反映我的预期设计。从我已经收到的帮助中,我了解到命名空间是组织类型以实现此目的的主要方式。
我遇到的问题是我的程序集,Assembly
比如说,使用了一层实现类。然而,其中的一些类Layer1
本身就是实现的一部分,Layer1
我想在我构建代码的方式中反映这一点。我的第一个想法是尝试Layer1
私下开设一些课程,但我可以看到这是不可能的。
从逻辑上讲,Layer1
是暴露类A1
,B1
等等C1
。它使用类A2
,B2
等等C2
。
namespace Assembly.Layer1
{
// "interface to Layer1"
class A1 // ...
class B1 // ...
class C1 // ...
// "implementation of Layer1"
class A2 // ...
class B2 // ...
class C2 // ...
} // (one file per class)
似乎解决此问题的一种方法是将A2
,B2
等C2
放入新的命名空间Assembly.Layer1.Layer2
. 然后,当我在顶级命名空间中编写代码并使用Assembly.Layer1
时,智能感知只向我显示Assembly.Layer1
公开的类。另外,按照惯例,我一次应该只在命名空间层次结构中向下引用一层。这是正确的方法吗?