Я не вижу, что это говорит о том, что типы одинаковы. ProddataRecsObservable
не то же самое, что ObservableCollection<Proddata>
- что заставляет вас думать, что они одного типа? Первый тип происходит от второго типа - он не делает их такими же типами.
Каждый экземпляр ProddataRecsObservable
является экземпляром ObservableCollection<Proddata>
из-за отношений наследования, но обратное неверно.
То, что вы делаете, эквивалентно:
class Test : object {}
object Foo()
{
return new object();
}
...
Test t = Foo();
Вы ожидаете, что это сработает? Если так, почему вы ожидаете, что это сработает? Как компилятор должен знать, что Foo
будет на самом деле возвращать экземпляр Test
(чего на самом деле здесь нет - и ваш метод не возвращает экземпляр вашего производного класса)? Если вы не ожидаете, что это сработает, почему вы ожидаете, что ваш пример кода будет работать?