【问题标题】:Reference integrity in BinaryFormatterBinaryFormatter 中的引用完整性
【发布时间】:2011-09-20 01:27:05
【问题描述】:

Protobuf-net 中 AsReference 选项的存在以及 BinaryFormatter 是“图形序列化器”这个词让我假设 BinaryFormatter 不维护引用并且它会复制每个对象。

但我做了一些测试,发现单个 BinaryFormatter Serialize() 或 Deserialize() 调用中的所有引用都保持不变,即使是递归引用。

我可以确认 BinaryFormatter 确实维护引用吗?这与 Protobuf-net 有何不同?好像我对“图形序列化”的理解不正确?我还应该注意什么?

提前致谢。

【问题讨论】:

    标签: c# reference protobuf-net binaryformatter


    【解决方案1】:

    tl;博士;版本 - BinaryFormatter 始终保留引用。

    BinaryFormatter 是“图形序列化程序”这一事实与“它保留引用”是同义词,因为这是需要准确再现图形。另一种选择是 tree 序列化程序(大多数XmlSerializerDataContractSerializer(未启用特定选项)、@ 987654325@ 和没有AsReference 的 protobuf-net 都是基于树的)。树序列化程序通常会保留引用(除非它们有一些技巧,即如果您启用全图模式,DataContractSerializer 会做什么,或者 protobuf-net 对AsReference 会做什么)。树序列化器(未启用 voodoo)往往会在递归模型的混乱中爆炸,这使得它们很容易被发现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      相关资源
      最近更新 更多