0

ちょっとした問題が発生しました - DLL をロードするプログラムを書いています。各 DLL には、ロードされた DLL とロードしている「ホスト」プログラムの両方によって参照されるライブラリに存在するクラスから継承するクラスが含まれていますDLL。ここでの問題は、スーパークラスをロードしてキャストしようとすると、次のようになることです。

var assembly = Assembly.LoadFrom(dllPath);
var type = assembly.GetTypes().FirstOrDefault(x => x.IsSubclassOf(typeof (MySuperclass)));
...

どちらも MySuperclass を含むクラスを参照していますが、dll はビルドされたクラス ライブラリ (ロード プログラムが参照しているクラス ライブラリ ファイルとは別のファイル) を参照しているため、IsSubclassOf は決して true を返しません。 2 つの異なるアセンブリから。

さらに、ロードされたクラスの作成されたインスタンスをスーパークラス型にキャストしようとしても、同じではない (異なるアセンブリ) ため、キャストできません。

私の質問は、共通コードを参照するアセンブリのロードをどのように処理して、共通スーパークラスから継承するクラスをロードしていることを c# が認識できるようにするかということです。

4

2 に答える 2

-1

祖先クラス (スーパークラス) は、ロード コードが子孫をスーパークラス参照として処理する可能性があるため、同じアセンブリから取得する必要があります。

于 2013-05-10T02:22:17.040 に答える