我正在使用 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。我知道这取决于顺序:文件先用年龄保存,然后从名称开始读取,因为它在基类上。
有没有办法处理这个问题,也许通过改变顺序?