別のDLLの部分クラスに2つの部分(同じ名前空間、同じクラス名)を持つことは可能ですか?
別のDLLの部分クラスに2つの部分(同じ名前空間、同じクラス名)を持つことは可能ですか?
回答:
MSDNから- 部分クラスとメソッド:
同じタイプのパーツであることを意図したすべての部分タイプ定義は、同じアセンブリと同じモジュール(.exeまたは.dllファイル)で定義する必要があります。部分的な定義は、複数のモジュールにまたがることはできません。
いいえ、それは不可能です。アセンブリがコンパイルされたら、クラスを終了する必要があります。
他の回答は、このページにアクセスした人が見たり聞いたりしたくないという不快な「いいえ」を提供しますが、ここではまだ触れられていない別の考えに感動しました。部分的なクラスがアセンブリ全体で許可された場合、彼が作成していない既存の型のプライベートメンバーにアクセスできるため、元の作成者が意図していない方法でそれらを操作できるため、継承するすべてのクラスの機能が危険にさらされます。あまりにも。
それだけでなく、他のアセンブリ(およびその子)のクラスは、機能させるために再コンパイルする必要があります。したがって、クラスをさまざまなアセンブリに分割することは論理的に不可能です。
問題は、なぜ別のアセンブリで部分クラスを作成するのかということです。アセンブリ全体で抽象クラスとインターフェイスを定義できます。おそらく、それを調べる必要があります。
おそらく、自分のライブラリ内で、第3部ライブラリのクラスの周りにWrapperクラスを作成したいだけです。次に、ラッパークラスに機能を追加します。