使用Protobuf-net更新特定条目

本文关键字:Protobuf-net 更新 使用 | 更新日期: 2023-09-27 18:08:57

我有一个正在使用Protofbuf-Net序列化的对象列表(假设是class AccessLevel)。

对象不是固定大小的,是否有可能更新序列化文件中的单个对象(基于索引)而不重写整个文件?

使用Protobuf-net更新特定条目

如果更改使其更小或不影响大小:可能,但是库中没有任何东西可以帮助您这样做,因为它不受支持的场景。对于相同长度:只需覆盖。当然,提前知道长度是一个技巧:)

在协议级别,当减少大小时:您可以通过伪造未使用的字段来填充数据,或者通过对现有字段使用次优变量编码(除了延续位之外没有其他内容的空闲字节)。

如果它变得更大:再多的技巧也不能避免你不得不重做整个文件。

这些都是理论上的。