Найти все родительские типы (как базовые классы, так и интерфейсы)

Я хочу быть в состоянии найти все родительские типы (базовые классы и интерфейсы) для определенного типа.

Например, если у меня есть

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;
            }
        }
    }

Я надеялся, что не должен был делать это сам, ну да ладно.

Ответы на вопрос(5)

Ваш ответ на вопрос