Предполагая следующую гипотетическую иерархию наследования:
public interface IA
{
  int ID { get; set; }
}
public interface IB : IA
{
  string Name { get; set; }
}
Используя отражение и делая следующий вызов:
typeof(IB).GetProperties(BindingFlags.Public | BindingFlags.Instance) 
приведет только к свойствам интерфейса IB, который равен "Name".
Если бы мы выполнили аналогичный тест по следующему коду,
public abstract class A
{
  public int ID { get; set; }
}
public class B : A
{
  public string Name { get; set; }
}
вызов typeof(B).GetProperties(BindingFlags.Public | BindingFlags.Instance) вернет массив объектов PropertyInfo для "ID" и "Name".
Есть ли простой способ найти все свойства в иерархии наследования для интерфейсов, как в первом примере?