- - PR -
GetMethod() で基底クラスのメソッド情報を取得できない?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-08-09 02:51
ほげたです。
あるクラスのメソッドをリフレクションで呼び出そうとしたところ、 そのクラス(仮にAクラス)で定義したメソッドのMethodInfoは取得できるのですが 基底クラス(仮にSクラス)のメソッドのMethodInfoが取得できません。 以下のコードを書くと、AクラスのメソッドやSクラスの public/protected なメソッドは1つ目のGetMethod()で取得できますが、 Sクラスの internal/private なメソッドは if文の中にあるGetMethod()でないと取得できないのです。
BindingFlagsをいろいろ変えて試したのですが、 結局わからずじまいで、上記コードをそのまま埋め込んでます。 どなたか、正しい方法を教えていただけないでしょうか。 | ||||
|
投稿日時: 2005-08-09 09:53
こんにちは、じゃんぬ です。
System.Reflection.BindingFlags.DeclaredOnly をつけてもダメでしょうか? 単に継承されただけのメソッドではなく、 Type で宣言されたメソッドだけを検索する場合は BindingFlags.DeclaredOnly。 との記述があります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-08-09 12:35
ではなく、逆に 親クラスの private なメソッドを
子クラスの Type から取得しようとしている、と認識しているのですが。 それって可能なの? | ||||
|
投稿日時: 2005-08-09 13:12
あれ? BaseTypeって書いて... あ、その前の段階 GetMethod のお話でしたか... orz _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-08-09 18:31
ほげたです。
にしざきさんの指摘にあるように、 子クラスには隠蔽される親クラスのメソッドを 子クラスのTypeから取得すること自体が間違いのようです。 リフレクションを使ってprivateなメソッドを呼び出しているうちに 「何でもあり」な気分になってました。 じゃんぬさんもありがとうございました。 | ||||
|
投稿日時: 2005-08-09 19:35
そうそう。(^^) Assembly から Invoke とかやってると... 特に。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1