Я использую protobuf-net r278 в C #, и я только что заметил, что если у меня есть класс с полем int
, поле не десериализуется должным образом, если его значение равно 0. А именно, при десериализации он получает значение по умолчанию из определения класса. Пример класса:
[ProtoBuf.ProtoContract]
public class
Test
{
[ProtoBuf.ProtoMember(1)]
public int Field1 = -1
[ProtoBuf.ProtoMember(2)]
public int Field2 = -1;
}
Затем запустите этот код:
var test = new Test();
test.Field1 = 0;
test.Field2 = 0;
MemoryStream ms_out = new MemoryStream();
ProtoBuf.Serializer.Serialize(ms_out, test);
ms_out.Seek(0, SeekOrigin.Begin);
var deser = ProtoBuf.Serializer.Deserialize<Test>(ms_out);
Когда я делаю это, deser
имеет Field1 = -1
и Field2 = 2
, а не 0. Я что-то здесь не так делаю?