リフレクションを介して調査する 2 つのインターフェイスと 2 つのクラスがあります。
- IParent
- IChild - IParent から派生
- 親
- 子 - 親から派生
私にとって奇妙なことは、 IChild 型のリフレクションを調べたときに、 IParent メソッドが見つからないという事実です。
Child 型に適用された同じコードは期待どおりに機能します - リフレクションは Parent メソッドを示します。
interface IParent
{
void ParentMethod();
}
interface IChild : IParent
{
void ChildMethod();
}
class Parent
{
public void ParentMethod(){}
}
class Child : Parent
{
public void ChildMethod(){}
}
void Main()
{
//investigate derived interface
Type t = typeof(IChild);
var info = t.GetMethod("ChildMethod");//ok
Console.WriteLine(info);
info = t.GetMethod("ParentMethod");//returns null!
Console.WriteLine(info);
//investigate derived class
t = typeof(Child);
info = t.GetMethod("ChildMethod");//ok
Console.WriteLine(info);
info = t.GetMethod("ParentMethod");//ok
Console.WriteLine(info);
}
そのような行動を説明してください。
派生インターフェイスの型から基本インターフェイスのメソッドを反映する回避策はありますか?