[英]How to get all the parent classes of a derived class in C# Reflection
奇怪的是我找不到类似的问题,但这实际上是我想要的,找到派生类的所有父类。
我测试了一个代码,希望它对我有用:
void WriteInterfaces()
{
var derivedClass = new DerivedClass();
var type = derivedClass.GetType();
var interfaces = type.FindInterfaces((objectType, criteria) =>
objectType.Name == criteria.ToString(),"BaseClass");
foreach(var face in interfaces)
{
face.Name.Dump();
}
}
interface BaseInterface
{}
class BaseClass : BaseInterface {}
class BaseClass2 : BaseClass {}
class DerivedClass : BaseClass2{}
基本上,这里我的主要目的是检查派生类是否以某种方式继承了基类中的基类。
但是,此代码返回null,并且仅适用于接口。
听起来您实际上并不需要所有其他类型-您只需要Type.IsSubclassOf
或Type.IsAssignableFrom
。 但是,使用Type.BaseType
可以轻松获取层次结构中的所有类型:
public static IEnumerable<Type> GetClassHierarchy(Type type)
{
while (type != null)
{
yield return type;
type = type.BaseType;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.