C#.NET でビジネス上の問題に取り組んでいます。C と W という名前の 2 つのクラスがあり、異なるタイミングで個別にインスタンス化されます。
クラス C のオブジェクトは、クラス W の 0 ... n 個のオブジェクトへの参照を含む必要があります。つまり、C オブジェクトは最大 n 個の W オブジェクトを含むことができます。
各 W オブジェクトには、クラス C の 1 つのオブジェクトへの参照が含まれている必要があります。つまり、W オブジェクトは 1 つの C オブジェクトに含まれています。
クラス C のオブジェクトは通常、最初にインスタンス化されます。後で、その W コンテンツが検出され、インスタンス化されます。この後の時点で、C オブジェクトと W オブジェクトを相互参照する必要があります。
これに適した設計パターンは何ですか? 実際には 3 つまたは 4 つのクラスが関係するケースがありますが、簡単にするために 2 つのクラスについて話すことができます。
私は次のような簡単なことを考えていました:
class C
{
public List<W> contentsW;
}
class W
{
public C containerC;
}
これは今のところ機能しますが、すべての参照とその有効性を追跡するためにかなりの量のコードを作成する必要があると予測できます。コンテナーのみの浅い更新と、参照されるすべてのクラスの深い更新を行うコードを実装したいと考えています。他のアプローチはありますか?また、その利点は何ですか?
11/3 に編集: 良い回答と良い議論をありがとう。それが私がやりたいことに最も近かったので、私は最終的にjopの答えを選びましたが、他の答えも役に立ちました。再度、感謝します!