Protobuf C#如何删除字段?

问题描述 投票:0回答:1

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

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

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

Internal error; a key mismatch occurred
c# serialization protocol-buffers protobuf-net
1个回答
0
投票

你最好的选择可能就是把它放在原处,并添加:

private bool ShouldSerializeobj() => false;

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

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

© www.soinside.com 2019 - 2024. All rights reserved.