Re[2]: [ООП] Наследование интерфейсов друг от друга
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 31.01.24 11:01
Оценка:
Здравствуйте, Sinclair, Вы писали:

_>>Кроме очевидных исключений типа

_>>
_>>IEnumerable<T>: IEnumerable
_>>

S>Вот как раз это исключение мне кажется максимально неочевидным. Именно это наследование стоило бы выкинуть к хренам, т.к. при наличии генерикового IEnumerable обычный только путается под ногами.
S>Так что это — не пример удачной иерархии интерфейсов, а компромисс между "хотим сделать удобный интерфейс для современных языков" и "боимся, что за нами не успеют авторы устаревших языков".
S>Сейчас IEnumerable — это ненужное legacy. Если бы у MS были средства на выпуск сразу второй версии дотнет, то этого ужаса бы нам не потребовалось.

IEnumerable позволяет избавиться от рефлексии когда нужно привести тип к IEnumerable в каком то общем методе вместо

 while (objType!=null && objType != typeof(object))
 {
     if (objType.IsGenericType && 
         objType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
         return true;
     objType = objType.BaseType;
 }
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.