0

アプリケーションの外部にリトライコードロジックがあります。これは、を使用してアセンブリをロードしAssembly.LoadFile(Asmpath); 、ロードされたアセンブリからアプリケーションにオブジェクトを返します。

そして、私はアプリ内の同じアセンブリへの参照を持っています。AddRefferencesを使用して作成しました。

オブジェクトを返すことができます。しかし、返されたオブジェクトを私のアプリケーションでそのタイプにキャストしている間、次のエラーがスローされます。

[A]SampleAssembly1.Class1を[B]SampleAssembly1.Class1にキャストすることはできません。タイプAは、場所'C:\ Users \ v-saabdu \ Desktop \ Final Code for RetryMethod \ ReflectionSamples \ SampleAssembly1\のコンテキスト'LoadNether'の'SampleAssembly1、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=null'に由来します。 bin \ Debug \SampleAssembly1.dll'。タイプBは、場所'C:\ Users \ v-saabdu \ Desktop \ Final Code for RetryMethod \ ReflectionSamples \ ReflectionAssembly\のコンテキスト'Default'の'SampleAssembly1、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=null'に由来します。 bin \ Debug \SampleAssembly1.dll'。

上記のエラーメッセージから、アセンブリがアプリケーションと再試行コード(アプリの外部)で読み込まれる方法がコンテキストによって異なることがわかりました。

誰かが私にこれに対する解決策を提案できますか?

ありがとう、

4

1 に答える 1

0
Assembly assembly = Assembly.LoadFile("Libtest.dll");
TestLib lib = (TestLib)assembly.CreateInstance("Lib");
lib.doSomething();

Lib クラスは TestLib インターフェイスを実装する必要があり、Foo.dll と bar.dll の両方からアクセスできる必要があります。

于 2012-11-19T08:35:18.143 に答える