4

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

  1. 老虎
  2. 动物
  3. 目的
4

2 回答 2

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您可以使用该属性轻松处理抽象类。

于 2009-12-04T03:52:18.703 回答
0

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

于 2009-12-04T03:53:48.573 回答