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

时间:2009-12-04 03:47:52

标签: c# reflection superclass

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

  1. 动物
  2. 对象

2 个答案:

答案 0 :(得分:10)

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

您可以使用Type.IsAbstract属性轻松处理抽象类。

答案 1 :(得分:0)

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