, если коллекция объявлена как ObservableCollection<Widget>
, она не может быть преобразована в ObservableCollection<IWidget>
. Я полагаю, что это возможно в .NET 4, но не в 3.5 и менее - ИСПРАВЛЕНИЕ - см. Комментарий Адама ниже.
Чтобы вышеприведенное сработало, вы должны объявить список как ObservableCollection<IWidget>
, тогда оба приведения будут работать. Вы всегда должны использовать тип интерфейса, где это возможно.
В качестве отступления при использовании ключевого слова as это называется безопасным приведением. Он вернет ноль, если приведение невозможно. Явное приведение ... т.е. (ObservableCollection<IWidget>) collectionView.SourceCollection
сгенерирует исключение, если приведение невозможно.