1

ここでの.NETリフレクションに関するいくつかの問題...

.NETでリフレクションを使用するシナリオがあります。別のクラスClassA_Baseからメソッドを継承するClassAというクラスがあります。両方とも同じアセンブリにあります。問題のメソッドは、別のアセンブリにあるパラメーター、インターフェース、IInterfaceAを取ります。.dllへのパスを取得するLoadFromメソッドでリフレクションを使用してClassAをロードすると、メソッドを使用しようとするとMissingMethodExceptionが発生し、VisualStudioで行を中断して表示したときに表示されません。基本クラスのメソッド。興味深いことに、基本クラスにはIInterfaceAを返すいくつかのプロパティもあり、これらのプロパティが表示されます。問題は何でしょうか?

ClassA : ClassA_Base
{
}

ClassA_Base
{
   SomeMethod(IInterfaceA obj); //Doesn't show up
   IInterfaceA SomeProperty{ get; } //Shows up
}

これはF#を使用して実装されていますが、動作は他の.NET言語の実装と同じだと思います。

前もって感謝します ...

4

2 に答える 2

0

デフォルトの代わりに、値Type.GetMethodを渡しBindingFlagsます。このようなもの:

typeof(ClassA).GetMethod("SomeMethod",
                         BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public,
                         null,
                         new Type[] { typeof(IInterfaceA) },
                         null);

申し訳ありませんが、F#に変換する方法がわかりません。

于 2012-05-09T11:38:38.603 に答える
0

リフレクションでは、現在のクラスに実装されているメソッドのみを取得しています。これは、基本クラスのものは表示されないことを意味します。メソッドを見つけたい場合は、基本クラスで検索してから、子で呼び出すことができます。

インターフェイスが表示される理由は、具象クラスにまだ実装されているためです。(ベースに実装されているだけではなく)

于 2012-05-09T11:51:04.587 に答える