我有克隆整数的问题,这是我使用的虚拟类
[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public class Ac
{
private int _ao = -1;
public int AO
{
get
{
return _ao;
}
set
{
_ao = value;
}
}
};
当我在AO为零时克隆它时,我得到值-1 当我尝试添加默认属性时,我得到正确的项目,但在某些属性中,当它保持为-1时,我得到0
答案 0 :(得分:1)
这与默认值有关。由于在时间深度上丢失的原因,protobuf-net在v1中假定零默认值。您可以在类型模型上关闭它,但更简单的选择是通过向字段添加[DefaultValue(-1)]
来告诉它默认值为-1。您也可以在反序列化期间禁用构造函数([ProtoContract(SkipConstructor=true)]
,但我个人觉得这不太令人满意。
关闭零默认行为的可能性更大。