1

我在克隆整数时遇到问题,这是我使用的虚拟类

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

    private int _ao = -1;

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

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

4

1 回答 1

1

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

关闭零默认行为可能更广泛。

于 2013-04-17T16:45:35.190 回答