При отражении по типу интерфейса я получаю только члены определенного типа, а не наследуемые члены.Почему элементы унаследованного интерфейса недоступны с помощью отражения?
В более упрощенном примере, программа только печатает «Имя», а не «ItemNumber», «Имя», как я бы ожидать:
using System;
public interface IBasicItem
{
string ItemNumber { get; set; }
}
public interface IItem : IBasicItem
{
string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
var type = typeof (IItem);
foreach (var prop in type.GetProperties())
Console.WriteLine(prop.Name);
}
}
Каково Обоснование этого? Когда я наследую базовый интерфейс, я говорю, что любая из реализаций моего интерфейса также должна реализовывать унаследованные члены. Другими словами, IItem is-a IBasicItem. Итак, почему унаследованный член не появляется с помощью отражения?
Doh ... Я могу сказать, что сегодня утром сон. +1 для правильного ответа. –