데이터 수집 목록을 serialize 할 수 있습니까?DataContracts 목록 직렬화/역 직렬화
[DataContract]
class ItemList<T>
{
public ItemList()
{
items=new List<T>();
}
[DataMember]
public List<T> items;
}
내가 나를의 3 개 버전 사이 버전을 사용하자 어떤 속성 [이름 = "구성"]로 3 clases 구성, Config_V1, Config_V2이 :이 같은 목록의 datacontract, 뭔가를 만들었습니다 구성 클래스. 그래서이 구성 clases의 ItemList 사이에 직렬화 및 deserialize하고 싶습니다. 내가 좋아하는 뭔가를 시도 :
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");
을하지만 ConfigData_V2의 목록을 기대하고 있지만 ConfigData_V1의 목록을 발견 말한다 ReadObj와 직렬화 복원하면 오류가 발생합니다. 이 충돌을 해결하기 위해 ConfigData 클래스의 버전 관리를 사용하지 않을까요?
나는 그것이 직렬화 생각이있다 문제가되는 강력한 형식의'List'자체 (구성원이 아님). 절름발이 인 채 untyped'List'를 시도해보십시오. –
bluevector
@jonnyGold 당신이 옳지 않습니다. 목록은 serializeble입니다 (IEnumereble 아님). 다른 곳에서 발행하십시오. –
RredCat
@RrefCat 직렬화 가능하지 않다는 말은하지 않았습니다. 'List'이 직렬화되었고'List '로 그것을 deserialize하려고 시도하고있다. 그것들은 같은'Type'이 아니기 때문에 작동하지 않을 것입니다. 그는 그것을 형별없는 것으로해야만한다. –
bluevector