У меня есть класс A
и класс B
, который происходит от A
. У меня есть экземпляр B
, а именно b
, из которого я хочу извлечь только часть A
. Что-то вроде:Извлечение базового объекта из производного объекта
var b = new B();
A a = (SomeCast)b;
Загвоздка a.GetType()
должен возвращать A
Тип не B
.
Возможно ли создать экземпляр A
и вручную скопировать все поля и свойства из b
?
Обновление Корень проблемы возникает из Entity Framework, которая не позволяет добавлять производные типы вместо базового типа. У меня есть производный тип biiig (к которому я не могу добавить аннотации) и хочу добавить только базовую часть в базу данных.
Мне просто интересно, что есть простой ответ.
Basic полиморфизма делает вывод, что 'b' * * является экземпляром' Ā' для всех намерений и целей. 'A a = b;' логически является экземпляром 'A'. Зачем вам также нужно «GetType()», чтобы продемонстрировать это? Сделав шаг назад, в чем проблема? – David
Корень проблемы возникает из Entity Framework, которая не позволяет добавлять производные типы вместо базового типа. У меня есть производный тип biiig (к которому я не могу добавить аннотации) и хочу добавить только базовую часть в базу данных. –
Вы должны обязательно добавить этот контекст к вопросу, а также, возможно, пример попытки использовать переменную в EF и вызвавшую ее ошибку. Это может быть скорее вопросом EF, чем вопросом полиморфизма, и вы захотите убедиться в том, что этот вопрос привлекает правильное внимание экспертов. – David