.NET - 如何从对象集合中查找最高公共基类

时间:2010-11-28 18:22:05

标签: .net class inheritance

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

IEnumerable<BaseClass>

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

此致

1 个答案:

答案 0 :(得分:4)

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;
    }
}

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