必要な参照が欠落しているとコンパイラーが文句を言っているシナリオがあります。
私は3つのアセンブリを持っています:
A.DLL
- パブリッククラスBaseClass
B.DLL(参照A.DLL)
- パブリッククラスDerivedClass:BaseClass
C.DLL
var派生=新しいDerivedClass();
C.DLLでは、B.DLLのみを参照しています(DerivedClassにのみアクセスする必要があります)。
コンパイラは、A.DLLも参照する必要があるというエラーを出します。
これによりカプセル化が完全に破られ、なぜこれが必要なのかわかりません(B.DLLはA.DLLを参照しているため)。
編集:「カプセル化を破る」という言葉の間違った選択。私の意図は、A.DLLからではなく、B.DLLからのみ型をインスタンス化しているため、このプロジェクト(C.DLL)に追加のコンパイル時の制約があるように見えることです。
主にBとCが同じソリューションに含まれているため、このコンパイル時の要件を削除したいと思いますが、Aはそうではありません。