2
我在C#中使用protobuf-net r278,我只注意到,如果我有一個int
字段的類,如果該字段的值設置爲0,該字段不正確反序列化。也就是說,反序列化時,它從類定義中獲得它的默認值。 Example類:protobuf網非反序列化0's
[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。我在這裏做錯了什麼?
感謝,正是我所需要的 – toasteroven 2010-03-05 20:04:11
是不是一個錯誤的行爲?這可能很容易導致數據難以找出損壞 – mafu 2012-02-22 15:57:50
@mafutrct由於沒有官方規範映射到POCO和推斷模式,這是不可能回答的;但是,在v2中有一個關閉零默認行爲的開關 – 2012-02-22 16:16:29