2
이의 내가이 클래스가 있다고 가정하자 :protobuf - 그물 이전 버전과의 호환성
[ProtoContract]
public class OldClass
{
[ProtoMember(1)] int X;
[ProtoMember(2)] int Y;
[ProtoMember(2)] int Z;
}
나는에 OldClass 변경하는 경우 :
[ProtoContract]
public class NewClass
{
Container container;
[ProtoMember(2)] int Z;
}
[ProtoContract]
public class Container
{
[ProtoMember(1)] int X;
[ProtoMember(2)] int Y;
}
합니다 NewClass에 OldClass를 역 직렬화 할 수있는 방법이 있나요를? 기본적으로 일부 멤버를 이동하여 컨테이너를 유지할 컨테이너 하위 클래스를 만들고 싶습니다. 그러나 이미 많은 SerialClass 클래스가 직렬화되어 디스크에 저장되어 있으며이를로드 할 수 있기를 원합니다.
이러한 X, Y, Z 멤버는 항상 int와 같은 기본 유형이 아닙니다. 두 개의 다른 필드에 대해 동일한 부재 인덱스를 사용하고 있기 때문에
좋습니다. – Michal
여러 OldClass 인스턴스와 NewClass 인스턴스를 서로 다른 파일에 직렬화 한 다음 NewClass로 deserialize해야하는 경우 어떻게해야합니까? 그냥'try {DeserializeToNewClass()} catch (WrongClassException) {DeserializeToOldClass();를 추가하십시오. ConvertOldToNew();}'블록? – Michal
더 나은 옵션이 있는지 잘 모르겠습니다. – Rotem