Вы не можете заполнить ObservableCollection<IChild>
с List<IBase>
.
Вы можете заполнить ObservableCollection<IBase>
только List<IChild>
из-за правил теории наследования.
Поскольку IBase является сокращенной версией IChild, типы не могут совпадать: вы не можете преобразоватьIBase в IChild.
Поскольку IChild - это расширенная версия IBase, типы могут совпадать: вы можете конвертировать IChild в IBase.
Например, автомобиль Toyota - это автомобиль, но все автомобили не являютсяТойота, так что вы можете действовать на Тойоту, как будто это Автомобиль, но вы не можете действовать на Тойоту, как будто это Тойота, потому что у Тойоты есть некоторые вещи и возможности, которых нет у абстрактной машины.
Посмотрите этот урок о том, что эта концепция одинакова для классов и интерфейсов:
Что такое наследование
Страница Википедии о наследовании:
https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)