データコントラクトのリストをシリアル化する方法はありますか? 次のようなリストのデータコントラクトを作成しました。
[DataContract]
class ItemList<T>
{
public ItemList()
{
items=new List<T>();
}
[DataMember]
public List<T> items;
}
属性 [Name="Config"] を持つ Config、Config_V1、Config_V2 の 3 つのクラスがあり、Config クラスの 3 つのバージョン間でバージョン管理を使用できます。したがって、この Config クラスの ItemList 間でシリアライズおよびデシリアライズしたいと考えています。私は次のようなことを試しました:
ItemList<ConfigData_V1> l = new ItemList<ConfigData_V1>();
l.items.Add(config);
WriteObject<ItemList<ConfigData_V1>>("serialization.bin", l);
ItemList<ConfigData_V2> l2;
l2=ReadObject<ItemList<ConfigData_V2>>("serialization.bin");
しかし、ReadObj でデシリアライズすると、ConfigData_V2 のリストが必要であるというエラーが表示されますが、ConfigData_V1 のリストが見つかりました。この競合を解決するには、ConfigData クラスのバージョン管理を使用するだけではないでしょうか?