Trouver tous les types parents (à la fois les classes de base et les interfaces)

Je veux être en mesure de trouver tous les parents de types (classes de base et des interfaces) pour un type spécifique.

Par exemple si j'ai

class A : B, C { }
class B : D { }
interface C : E { }
class D { }
interface E { }

je veux voir qu'Une est B, C, D et E et de l'Objet

Quel est le meilleur moyen pour ce faire? est-il une méthode de réflexion pour ce faire ou dois-je le faire moi-même quelque chose.

====EDIT====

Donc quelque chose comme cela?

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

J'ai été un peu en espérant que je n'ai pas eu à le faire moi-même mais bon.

source d'informationauteur Luke McGregor | 2012-01-15