Когда у вас есть класс, полученный из базового класса, любые контейнеры этих классов автоматически не выводятся. Таким образом, вы не можете просто отличить List<Derived>
от List<Base>
.
Используйте .Cast<T>()
для создания нового списка, в который каждый объект возвращается в базовый класс:
List<MyDerived> list1 = new List<MyDerived>();
List<MyBase> list2 = list1.Cast<MyBase>().ToList();
Обратите внимание, что это новый список, а не литая версия исходного списка, поэтому операции над этим новым списком не будут отображаться в исходном списке. Однако операции над содержащимися объектами будут отражаться.