我在protobuf中将字段序列化为二进制文件。现在我要删除一个字段。
[ProtoMember(9, AsReference = true)]// to remove
private MyClass obj; // to remove
现在我想离开序列化这个对象,并从序列化中删除,但我需要打开旧文件。所以我无法打开这个文件。当我尝试打开文件时,我有异常:
Internal error; a key mismatch occurred
答案 0 :(得分:0)
你最好的选择可能就是把它放在原处,然后加上:
private bool ShouldSerializeobj() => false;
这会添加成员obj
的“条件序列化”,这意味着它不会被序列化。但是,在反序列化时仍会处理它。
注意:AsReference = true
使这更加复杂。通常,您只需删除该字段即可。