protobuf-net でシリアル化/逆シリアル化された複雑なモデルがあり、デフォルト値をシリアル化しないというこの「機能」にはいくつかのバグがありました。
例:
[DataContract]
class Foo{
public Foo(){
// Value forced by constructor
this.Value = 1;
}
// Buggy, when Value is set to zero
[DataMember(Order = 1)]
public double Value {get; set}
}
Value = 0 の場合、protobuf-net によってシリアル化されませんが、逆シリアル化中に、コンストラクターは Value を強制的に 1 にします (protobuf-net はこれを変更しません)。
それを機能させるには、protobuf-net に強制的に値をシリアル化させる必要があります。
// Works fine
[DataMember(Order = 1, IsRequired = true)]
public double Value {get; set}
しかし、この機能のためにすでにバグが発生しているため、すべてのプロパティをマークするのではなく、モデル全体に protobuf-net を強制したいと考えています。
出来ますか?