C# 列出对象的所有具体或抽象类

C# 列出对象的所有具体或抽象类,c#,reflection,superclass,C#,Reflection,Superclass,在C#中,是否可以通过反射或其他方法返回对象的所有超类(具体和抽象,主要对具体类感兴趣)的列表。例如,传入“Tiger”类将返回: 老虎 猫 畜生 反对 您可以通过使用Type.isastract属性轻松处理抽象类。当然,可以使用“GetType()”方法获取所提供对象的类型。每个类型实例都有一个“”属性,该属性提供直接继承的类型。您可以递归地跟踪这些类型,直到找到一个具有空BaseType(即对象)的类型。Reflector包含一个方便的“基类型”节点,您可以使用它深入到类型的接口和基类。这是

在C#中,是否可以通过反射或其他方法返回对象的所有超类(具体和抽象,主要对具体类感兴趣)的列表。例如,传入“Tiger”类将返回:

  • 老虎
  • 畜生
  • 反对

  • 您可以通过使用
    Type.isastract
    属性轻松处理抽象类。

    当然,可以使用“GetType()”方法获取所提供对象的类型。每个类型实例都有一个“”属性,该属性提供直接继承的类型。您可以递归地跟踪这些类型,直到找到一个具有空BaseType(即对象)的类型。

    Reflector包含一个方便的“基类型”节点,您可以使用它深入到类型的接口和基类。这是一个非常简单的答案,但正是我想要的。谢谢
    static void VisitTypeHierarchy(Type type, Action<Type> action) {
        if (type == null) return;
        action(type);
        VisitTypeHierarchy(type.BaseType, action);
    }
    
    VisitTypeHierarchy(typeof(MyType), t => Console.WriteLine(t.Name));