我有一个使用 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 ,而不是标记每个属性。
是否可以?