.NET - 如何从对象集合中找到最高公共(public)基类

标签 .net class inheritance

我有一个使用多个级别的类继承的应用程序。我想知道,如果我有一组从基类派生的对象,例如简单地

IEnumerable<BaseClass>

如果不是 BaseClass,我如何找到集合中所有对象派生的最高常见类型?

问候,

最佳答案

Type baseType = null;

foreach (var obj in objects)
{
    if (baseType == null)
        baseType = obj.GetType();
    else
    {
        Type currentType = obj.GetType();

        while (!baseType.IsAssignableFrom(currentType))
            baseType = baseType.BaseType;
    }
}

此代码仅适用于实际继承层次结构,不适用于接口(interface)层次结构。

关于.NET - 如何从对象集合中找到最高公共(public)基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298235/

相关文章:

c# - 如何为我的 ASP.NET TextBox 获取正确的 ClientID?

c++ - 错误 C2027 : use of undefined type - how to declare class

c# - 通过继承构造函数来颠倒构造函数调用的顺序

python - 动态实例属性

c++ - 在类或文件中定义枚举?

Java不允许多重继承,我混淆了子类继承Object类和它的父类(super class)?

html - 覆盖 <html> 元素样式

c# - IEnumerable 到 IList 的转换(Dapper 返回结果)

.NET Core 2 - 将文件夹复制到

c# - 存储在 SQL Server 中时,我的 DateTime 中的毫秒数会发生变化