Целое число, равное 0, сериализуется(с использованием protobuf-net) как null. Есть какие-нибудь обходные пути для решения этой проблемы?

#protobuf-net

Вопрос:

Целочисленное значение, равное 0, сериализуется как null. похоже, что 0 принимается по умолчанию и игнорируется во время сериализации. Есть ли способ решить эту проблему?

Ответ №1:

По умолчанию protobuf-net следует соглашениям proto3 о нулевом===по умолчанию===не сериализованном, но вы можете переопределить это поведение, используя IsRequired на ProtoMemberAttribute :

 [ProtoMember(42, IsRequired = true)]
public int Foo {get;set;}
 

В качестве альтернативы, в более сложных сценариях вы можете использовать «условную сериализацию» (этот же подход работает с широким спектром сериализаторов).:

 [ProtoMember(42)]
public int Foo {get;set;}

public bool ShouldSerializeFoo() { /* your own rules here */ }