设置为 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 */ }