| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Как преобразовать myClass<myType> в myClass<objec> |
| Автор: Tereha 17.2.2013, 10:18 | ||||||||
| Уважаемые Гуру! В TabControl ItemsSource связывается с ObservableCollection содержащей набор generic ViewModel. С помощью generic я настраиваю ViewModel на заданный тип объекта edm. В настоящий момент мне кажется, что должно быть нечто вроде
и новый элемент включается в коллекцию как-то вроде
где
Но на преобразовании
получаю сообщение, что такое преобразование невозможно. Возможно кто-то сможет подсказать, как обойти эту проблему? |
| Автор: dzaraev 5.9.2013, 07:50 | ||||||
Чтобы осуществить преобразование, подобное этому
Вам необходима вариация generic-параметра. Про вариацию в C# можно прочитать на MSDN: http://msdn.microsoft.com/ru-ru/library/dd799517(v=vs.100).aspx В вашем случае не получится сделать именно так, как вы хотите, т.к. вариация применяется только к интерфейсам и делегатам. Это значит вместо класса WorkspaceViewModel<T>; вам необходимо будет объявить интерфейс IWorkspaceViewModel<out T> Это будет означать, что можно выполнить преобразование
При условии, что MyType - ссылочный тип. Таким образом, вам даже не придется выполнять преобразование явно через оператор as, вы можете просто добавить экземпляр MyViewModel в коллекцию типов IWorkspaceViewModel<object>. Вот так приблизительно нужно переписать ваш пример, чтобы он заработал:
Подробности узнаете, если пройдёте по ссылке, которую я привел выше. |