Найти все родительские типы (как базовые классы, так и интерфейсы)
Я хочу быть в состоянии найти все родительские типы (базовые классы и интерфейсы) для определенного типа.
Например, если у меня есть
class A : B, C { }
class B : D { }
interface C : E { }
class D { }
interface E { }
я хочу видеть, чтоявляется B C D и E и Объект
Какой лучший способ сделать это? Есть ли способ отражения, чтобы сделать это, или мне нужно сделать что-то себе.
==== ==== EDIT
Так как то так?
public static IEnumerable<Type> ParentTypes(this Type type)
{
foreach (Type i in type.GetInterfaces())
{
yield return i;
foreach (Type t in i.ParentTypes())
{
yield return t;
}
}
if (type.BaseType != null)
{
yield return type.BaseType;
foreach (Type b in type.BaseType.ParentTypes())
{
yield return b;
}
}
}
Я надеялся, что не должен был делать это сам, ну да ладно.