У меня есть 2 интерфейса и 2 класса, которые я исследую через Reflection:
- IParent
- IChild - происходит от IParent
- Родитель
- Ребенок - происходит от родителя
Странная вещь для меня - это тот факт, что когда я просматриваю отражение типа IChild, я не нахожу метод IParent.
Тот же код, примененный к типу Child работает как ожидалось - отражение показывает родительский метод.
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);
}
Пожалуйста, объясните такое поведение?
Существует ли какое-либо обходное решение для отражения методов базового интерфейса из производного типа интерфейса?