オブジェクトをシリアル化するために 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 を取得します。これは順序に依存することを知っています。ファイルは最初に年齢とともに保存され、次に名前から読み取られます。これは、基本クラスにあるためです。
おそらく順序を変更することによって、これを処理する方法はありますか?