【发布时间】:2025-11-23 08:45:02
【问题描述】:
是否可以在 C# 中通过反射或其他方法返回对象的所有超类(具体和抽象,主要对具体类感兴趣)的列表。例如传入“Tiger”类将返回:
- 老虎
- 猫
- 动物
- 对象
【问题讨论】:
-
Reflector 包含一个方便的“基类型”节点,您可以使用该节点深入了解类型的接口和基类。
标签: c# reflection superclass
是否可以在 C# 中通过反射或其他方法返回对象的所有超类(具体和抽象,主要对具体类感兴趣)的列表。例如传入“Tiger”类将返回:
【问题讨论】:
标签: c# reflection superclass
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 的类型(即对象)
【讨论】: