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

Mic*_*uso 4 c# reflection superclass

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

  1. 动物
  2. 宾语

jas*_*son 10

static void VisitTypeHierarchy(Type type, Action<Type> action) {
    if (type == null) return;
    action(type);
    VisitTypeHierarchy(type.BaseType, action);
}
Run Code Online (Sandbox Code Playgroud)

例:

VisitTypeHierarchy(typeof(MyType), t => Console.WriteLine(t.Name));
Run Code Online (Sandbox Code Playgroud)

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