3

そのメソッドに渡すタイプがある場合、呼び出すのに最も適切なメソッドをリフレクションを介して見つけようとしています。

私が心配しているエッジケースは、次のように同じ数のパラメーターでオーバーロードしています。

class UserClass {}
class UserClassB : UserClass {}

class SomeClass {
   void method(object x);
   void method(UserClass x);
}

実行時に を呼び出すことに興味がありますmethodが、手元にある型は ですUserClassB

最も適切なのはmethod(UserClass).

問題は、それを使用typeof(SomeClass).GetMethod("method", new Type[] { typeof(UserClass2) })); するとnullが返されることです。渡された型の完全一致に基づいて検索されたと思います。

何か案は?ありがとう。

4

1 に答える 1

2

バインディング フラグがありません。次のフラグを渡すことができるオーバーロードを使用します
。BindingFlags.NonPublic

非パブリック メソッドも必要であると指定しない限り、GetMethod はパブリック メソッドを探すため、null を取得しています。

var method = typeof(SomeClass).GetMethod("method", BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { typeof(UserClass) },null);
于 2012-07-18T12:57:46.083 に答える