繁体   English   中英

如何在C#反射中获取派生类的所有父类

[英]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.IsSubclassOfType.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM