Я использую DataContracts для сериализации объектов. Предположим, я сериализовал данные, структурированные таким образом:
[DataContract]
public class Dog : IExtensibleDataObject
{
[DataMember]
public int age;
[DataMember]
public string name;
ExtensionDataObject IExtensibleDataObject.ExtensionData { get; set; }
}
Теперь я меняю свою архитектуру, и я хотел бы прочитать ранее сериализованные данные с помощью этих классов:
[DataContract]
[KnownType(typeof(Dog))]
public class Animal : IExtensibleDataObject
{
[DataMember]
public string name;
ExtensionDataObject IExtensibleDataObject.ExtensionData { get; set; }
}
[DataContract]
public class Dog : Animal
{
[DataMember]
public int age;
}
но я получаю name = null. Я знаю, что это зависит от порядка: сначала файл был сохранен с возрастом, а затем прочитан, начиная с имени, потому что он находится в базовом классе.
Есть ли способ справиться с этим, может быть, изменив порядок?