1

アセンブリを動的にロードし、そこから静的メソッドを呼び出しています。この問題は、メソッドが自明ではない参照 (mscorlib や System.Core など) を使用する場合に発生します - I get System.MissingMethodException. ロードされたアセンブリの参照アセンブリを調べて、それらをすべて手動でロードしようとしたため、AppDomain に強制的にロードされました。確認CurrentDomain.GetAssembliesしました。アセンブリがロードされています。

リファレンスはサード パーティのライブラリであり、正しいバージョンがロードされていることがわかっています (からCurrentDomain.GetAssemblies)。

この問題の原因は何ですか?

4

2 に答える 2

0

その静的メソッドを呼び出すためにどのメソッドを使用していますか?

私は使うだろう:

typeof(YourType).GetMethod("YourMethodName", 
     BindingFlags.Public | BindingFlags.Static).Invoke(null, your_params);

万が一、メソッドが実際に基本クラスに実装されている場合は、次のものが必要になります。

typeof(YourType).GetMethod("YourMethodName", 
     BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy)
  .Invoke(null, your_params); 

メソッドが公開されていない場合は、を追加する必要がありますBindingFlags.NonPublic

外部アセンブリから必要な場合は、のAssembly.GetType()代わりにを使用しtypeofます。

于 2011-12-05T19:38:12.827 に答える