Я довольно новичок на C# и искал эту тему здесь. Я думаю, что мне не хватает чего-то фундаментального, поэтому приношу извинения, если это глупый вопрос.Downcasting - Основы
У меня есть два объекта FullAlbum и Album. FullAlbum наследуется от альбома. Я пытаюсь превратить объект Album в объект FullAlbum, чтобы я мог работать с ним. Я думал, что это было так же просто, как «Downcasting» от альбома до FullAlbum, но я не могу заставить его работать, я получаю ошибку времени выполнения, которая говорит, что он не может конвертировать из одного в другой.
У меня уже есть объект Album Album, который заполняется при отладке. Я тогда пытаюсь;
FullAlbum _fullAlbum = new FullAlbum();
_fullAlbum = _album as FullAlbum;
Я ожидаю, что это скопирует все свойства из альбома в FullAlbum. Я пропустил пункт?
Возможный дубликат [C# Inheritance & Casting] (http://stackoverflow.com/questions/4453242/c-sharp-inheritance-casting) – Neolisk
"* Я ожидаю, что это скопирует все свойства es от _album до FullAlbum. Мне не хватает точки? * «Да. Кастинг не копирует никаких свойств, он просто меняет понимание компилятором того, какой тип данных имеет переменная. –
Одним из подходов к решению проблемы является создание конструктора FullAlbum, который принимает тип Альбом, а затем установить любые свойства в FullAlbum, которые вам нужны внутри конструктора. Существуют некоторые решения [здесь] (http://stackoverflow.com/questions/729527/is-it-possible-to-assign-a-base-class -объект-к-производному-классу-reference-with-a), который может помочь в этом. – Mash