У меня есть архитектура, в которой мы передаем наши узлы данных как IEnumerable<BaseNode>
. Все это прекрасно работает, но в каждом подклассе мы хотим сохранить их как List<AnotherNode>
, так как все в этом классе создает и использует AnotherNode
объекты (у нас есть около 15 различных подклассов).
Единственное место, где более строго типизированный список не работает, - это метод корневых классов, который возвращает тип IEnumerable<BaseNode>
и с ограничениями на ковариацию в .net 3.5, которые не могут быть возвращены. (Мы пока должны оставаться на .net 3.5.)
Но если у меня есть List<AnotherNode> data;
и возвращаю data.OfType<BaseNode>();
- это прекрасно работает. Итак, вот мой вопрос.
Поскольку все данные относятся к типу BaseNode
- каков прирост производительности этого вызова? Потому что альтернативой является то, что я должен разыгрывать в местах с небольшим ударом по производительности, но это также ситуация, когда мы бросаем все, зная, что это за тип.