Protobuf C#如何删除字段?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Protobuf C#如何删除字段?相关的知识,希望对你有一定的参考价值。
我在protobuf中将字段序列化为二进制文件。现在我要删除一个字段。
[ProtoMember(9, AsReference = true)]// to remove
private MyClass obj; // to remove
现在我想离开序列化这个对象,并从序列化中删除,但我需要打开旧文件。所以我无法打开这个文件。当我尝试打开文件时,我有异常:
Internal error; a key mismatch occurred
答案
你最好的选择可能就是把它放在原处,并添加:
private bool ShouldSerializeobj() => false;
这增加了成员obj
的“条件序列化”,这意味着它不会被序列化。但是,在反序列化时仍将处理它。
注意:正是AsReference = true
使这更复杂。通常,您只需删除该字段即可。
以上是关于Protobuf C#如何删除字段?的主要内容,如果未能解决你的问题,请参考以下文章