Использование DCS Я пытаюсь десериализовать объекты из XML, где сериализуемый объект имеет тип Child, наследующий класс Base, где Child имеет некоторые свойства, которые были десериализованы, но позже были перенесены в класс База в коде. Теперь эти свойства не получают десериализации:десериализация DataContractSerializer свойств, перенесенных из производного класса в базовый класс
Посмотрите на этот XML:
<Base i:type="a:DirectoryEntry" xmlns="http://schemas.datacontract.org/2004/07/pending.Core.Models" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://schemas.datacontract.org/2004/07/pending.Core.Models.Directory">
<Active>true</Active>
<ContentType>DirectoryEntry</ContentType>
<Created>2012-03-12T11:51:25.3401552+01:00</Created>
<a:Location>location</a:Location>
<a:OpenHours>opening</a:OpenHours>
</Base>
Xmlns: а обозначает имя производного типа. Этот класс использовался для хранения этих реквизитов. Теперь они были перемещены в базовый класс, и они больше не десериализуются DCS (свойства являются пустыми после десериализации). Я говорю о свойствах с: перед ними (Location и OpenHours в этом случае).
У нас есть много этих файлов, содержащих данные. Каковы мои варианты правильного десериализации этих файлов с помощью DCS?
Пожалуйста, обратите внимание, что [KnownType] атрибуты используются как на базе и детского класса
спасибо, это очевидный ответ, но требует ручного изменения файлов XML. Вы знаете альтернативу, которая заставит DCS найти эти свойства в базовом классе и сериализовать их? – mare