.NET - Как найти наивысший общий базовый класс из коллекции объектов - PullRequest
4 голосов
/ 28 ноября 2010

У меня есть приложение, которое использует несколько уровней наследования классов. Я хотел бы знать, что если бы у меня была коллекция объектов, которые происходят от базового класса, например просто

IEnumerable<BaseClass>

Как найти наивысший общий тип, из которого получены все объекты в коллекции, если он отличается от BaseClass?

С уважением,

1 Ответ

4 голосов
/ 28 ноября 2010
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;
    }
}

Этот код будет работать только для фактической иерархии наследования, но не для иерархий интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...