设置为 0 的整数被序列化(使用 protobuf-net)为 null。有解决此问题的解决方法吗?
An integer set to 0 is serialized(using protobuf-net) as null. Any workarounds to fix this problem?
设置为 0 的整数值被序列化为 null。似乎 0 被视为默认值并在序列化期间被忽略。有办法解决吗?
默认情况下,protobuf-net 遵循零===默认===未序列化的 proto3 约定,但您可以通过在 ProtoMemberAttribute
上使用 IsRequired
来覆盖此行为:
[ProtoMember(42, IsRequired = true)]
public int Foo {get;set;}
或者,在更高级的场景中,您可以使用“条件序列化”(同样的方法适用于各种序列化程序):
[ProtoMember(42)]
public int Foo {get;set;}
public bool ShouldSerializeFoo() { /* your own rules here */ }
设置为 0 的整数值被序列化为 null。似乎 0 被视为默认值并在序列化期间被忽略。有办法解决吗?
默认情况下,protobuf-net 遵循零===默认===未序列化的 proto3 约定,但您可以通过在 ProtoMemberAttribute
上使用 IsRequired
来覆盖此行为:
[ProtoMember(42, IsRequired = true)]
public int Foo {get;set;}
或者,在更高级的场景中,您可以使用“条件序列化”(同样的方法适用于各种序列化程序):
[ProtoMember(42)]
public int Foo {get;set;}
public bool ShouldSerializeFoo() { /* your own rules here */ }