; , . , , , , protobuf-net . root node, - ( ):
[Contract]
class Wrapper {
[Member] public A A {get;set;}
[Member] public B B {get;set;}
[Member] public C C {get;set;}
}
, A/B/C , , . , A , . , :
, :
int version = -1;
using(var reader = new ProtoReader(inputStream)) {
while(reader.ReadFieldHeader() > 0) {
const int VERSION_FIELD_NUMBER = ;
if(reader.FieldNumber == VERSION_FIELD_NUMBER) {
version = reader.ReadInt32();
break;
} else {
reader.SkipField();
}
}
}
inputStream.Position = 0;
, , Version ; API Serializer.Deserialize<T>, Type API (Serializer.NonGeneric.Deserialize RuntimeTypeModel.Default.Deserialize - , , , - ).
A/B/C - /, - auto-mapper.
, ProtoReader , :
[DataContract]
class VersionStub {
[DataMember(Order=VERSION_FIELD_NUMBER)]
public int Version {get;set;}
}
Deserialize<VersionStub>, Version, ; , ProtoReader , .