如何使用protobuf克隆整数

时间:2013-04-17 14:10:30

标签: c# protobuf-net

我有克隆整数的问题,这是我使用的虚拟类

[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public class Ac
{

    private int _ao = -1;

    public int AO
    {
        get
        {
            return _ao;
        }
        set
        {
            _ao = value;
        }
    }
};

当我在AO为零时克隆它时,我得到值-1 当我尝试添加默认属性时,我得到正确的项目,但在某些属性中,当它保持为-1时,我得到0

1 个答案:

答案 0 :(得分:1)

这与默认值有关。由于在时间深度上丢失的原因,protobuf-net在v1中假定零默认值。您可以在类型模型上关闭它,但更简单的选择是通过向字段添加[DefaultValue(-1)]来告诉它默认值为-1。您也可以在反序列化期间禁用构造函数([ProtoContract(SkipConstructor=true)],但我个人觉得这不太令人满意。

关闭零默认行为的可能性更大。