アセンブリを整理して、記述したコードが意図した設計を反映するようにしたいと考えています。すでに受け取ったヘルプから、名前空間がこれを達成するために型を編成する主要な方法であることを理解しています。
私が抱えている問題は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)
これに対処する 1 つの方法はA2
、B2
、C2
などを新しい名前空間 に配置することのようAssembly.Layer1.Layer2
です。次に、最上位の名前空間でコードを記述して を使用すると、インテリセンスは公開Assembly.Layer1
するクラスのみを表示します。Assembly.Layer1
また、慣例により、名前空間階層内で一度に 1 つのレイヤーだけを参照する必要があります。これは正しいアプローチですか?