Protobuf C#如何删除字段?

时间:2018-03-02 10:23:26

标签: c# serialization protocol-buffers protobuf-net

我在protobuf中将字段序列化为二进制文件。现在我要删除一个字段。

[ProtoMember(9, AsReference = true)]// to remove
 private MyClass obj; // to remove

现在我想离开序列化这个对象,并从序列化中删除,但我需要打开旧文件。所以我无法打开这个文件。当我尝试打开文件时,我有异常:

Internal error; a key mismatch occurred

1 个答案:

答案 0 :(得分:0)

你最好的选择可能就是把它放在原处,然后加上:

private bool ShouldSerializeobj() => false;

这会添加成员obj的“条件序列化”,这意味着它不会被序列化。但是,在反序列化时仍会处理它。

注意:AsReference = true使这更加复杂。通常,您只需删除该字段即可。