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