使用 Protobuf-net,如果现有实例相同,它是否允许反序列化重用它们?
我正在使用 Protobuf-net。假设我有一个序列化的 Gizmo 对象列表,并且每个 Gizmo 对象引用一个 Gazoo 对象。 Gazoo 对象可能是多个 Gizmo 对象引用的同一对象。
在这种情况下反序列化将如何工作?
对于 gizmo 对象中相同的引用副本,我是否会获得不止一份 Gazoos 副本?
我期望的是一份 Gazoo 副本用于序列化数据中的所有重复项。
I'm using Protobuf-net. Suppose I have a list of Gizmo objects serialized and that each gizmo object reference a Gazoo object. The Gazoo object might be the same object referred by several Gizmo objects.
How would deserialization work in this situation?
Would I get more than one copies of Gazoos for the same referred one in the gizmo objects?
What I would expect would be one copy of Gazoo for all the duplicates in the serialized data.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
谷歌定义的有线格式是树序列化器,而不是图序列化器,因此对象引用不被保留。然而,一旦我发布了“v2”,我就有了一些邪恶的计划,将对象引用/图形支持侵入到模型中——本质上是通过(在该模式下)包含额外的对象 ID 数据。然而,这将使其在互操作场景中使用起来有些棘手 - 因此理想情况下仅适用于 protobuf-net <===> protobuf-net。
但今天什么也没有——你会得到多个副本,或者如果你得到一个循环引用,它应该会爆炸。
作为更新:现在可以在 protobuf-net v2 中使用,但作为代码规范外部的特定于实现的功能。
The wire-format defined by google is a tree serializer, not a graph serializer, so object-references are not preserved. However, once I get "v2" shipped, I have some nefarious plans to hack object-reference/graph support into the model - essentially by (in that mode) including additional object-id data. This will make it somewhat tricky to use in interop scenarios, however - so ideally only good for protobuf-net <===> protobuf-net.
But nothing today - you'll get multiple copies, or if you get a circular reference it should explode.
As an update: this is now available in protobuf-net v2, but as an implementation-specific feature outside of the code spec.