是否可以在 C# 中通过反射或其他方法返回对象的所有超类(具体和抽象,主要对具体类感兴趣)列表。例如传入“Tiger”类将返回:
- 老虎
- 猫
- 动物
- 目的
是否可以在 C# 中通过反射或其他方法返回对象的所有超类(具体和抽象,主要对具体类感兴趣)列表。例如传入“Tiger”类将返回:
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
您可以使用该属性轻松处理抽象类。
当然,使用“GetType()”方法来获取所提供对象的类型。每个 Type 实例都有一个“ BaseType ”属性,它提供直接继承的类型。您可以递归地跟踪类型,直到找到具有 null BaseType 的类型(即对象)