Protobuf-net 中 AsReference 选项的存在以及 BinaryFormatter 是“图形序列化器”这个词让我假设 BinaryFormatter 不维护引用,并且它会复制每个对象。
但我做了一些测试,发现单个 BinaryFormatter Serialize() 或 Deserialize() 调用中的所有引用都会被维护,即使对于递归引用也是如此。
我可以确认 BinaryFormatter 确实维护引用吗?这与 Protobuf-net 有什么不同?看来我对“图序列化”的理解不正确?我还应该注意什么?
提前致谢。
太长;博士;版本 -BinaryFormatter
始终保留引用。
事实是BinaryFormatter
是“图形序列化器”与“它保留引用”同义,因为那是required准确地再现图表。另一种选择是tree序列化器(即most其中;XmlSerializer
, DataContractSerializer
(没有启用特定选项),JavascriptSerializer
和 protobuf-net 没有AsReference
都是基于树的)。树序列化器做not通常保留引用(除非它们使用了一些技巧,即什么DataContractSerializer
如果启用全图模式,或者 protobuf-net 会执行AsReference
)。树序列化器(没有启用巫毒)往往会在递归模型中爆炸成混乱,这使得它们很容易被发现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)