2
Int64처럼 0에 인코딩 문제가있는 것 같습니다. 다른 값은 Int64 ok입니다. protobuf.net이 0을 직렬화하지 않음
[ProtoMember(3)] private readonly Int64 _intValue
는
어떤 생각 Int64.MinValue
로 역 직렬화?나는 버그를 확인했습니다. _val == 0
[ProtoContract]
class VerySimple
{
[ProtoMember(1)]
private readonly Int64 _val = Int64.MinValue;
public VerySimple(long val)
{
_val = val;
}
public long Val
{
get { return _val; }
}
public VerySimple()
{
}
}
이 테스트는 지연에 대한 유감
public void TestProtobufEncodingSimple()
{
//OK
{
MemoryStream stream = new MemoryStream();
Serializer.Serialize(stream, new VerySimple(1));
stream.Seek(0, SeekOrigin.Begin);
VerySimple reloaded = Serializer.Deserialize<VerySimple>(stream);
Assert.AreEqual(reloaded.Val, 1L);
}
//KO
{
MemoryStream stream = new MemoryStream();
Serializer.Serialize(stream, new VerySimple(0));
stream.Seek(0, SeekOrigin.Begin);
VerySimple reloaded = Serializer.Deserialize<VerySimple>(stream);
Assert.AreEqual(reloaded.Val, 0L);
}
}