我通过反射调查了 2 个接口和 2 个类:
- 父母
- 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);
}
请解释这种行为?
是否有任何解决方法可以从派生接口的类型中反映基接口的方法?