c# - 获取类型的继承树

标签 c# reflection inheritance

Possible Duplicate:
To get parent class using Reflection on C#

我试图找到一种在 C# 中使用反射获取特定类型的继承树的简单方法。

假设我有以下类(class);

public class A
{ }

public class B : A
{ }

public class C : B
{ }

我如何使用类型“C”的反射来确定它的父类(super class)是“B”,而后者又来自“A”等等?我知道我可以使用“IsSubclassOf()”,但假设我不知道我正在寻找的父类(super class)。

最佳答案

要获取类型的直接父代,您可以使用 Type.BaseType属性(property)。您可以迭代调用 BaseType 直到它返回 null 以沿着类型的继承层次结构向上移动。

例如:

public static IEnumerable<Type> GetInheritanceHierarchy
    (this Type type)
{
    for (var current = type; current != null; current = current.BaseType)
        yield return current;
}

请注意,使用 System.Object 作为端点是无效的,因为并非所有类型(例如,接口(interface)类型)都继承自它。

关于c# - 获取类型的继承树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5716896/

相关文章:

java - Lotus Domino C# LtpaToken 类

c# - 我的服务应如何响应 Azure 负载均衡器探测?

c# - 来自命名空间字符串的程序集名称

list - 列出 Rust 中的不同类型

java - BeanUtils.copyProperties(subclass,superclass) 对于子类字段值返回 null

Python数字基类或如何确定一个值是一个数字

c# - 在 C# 中检查子目录

c# - DataContractSerialiser 和 Serializable 的问题

c# - 如何动态生成和填充多维数组

c# - 使用反射创建类型时出现问题