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/