BinaryFormatter中的引用完整性

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

但我做了一些测试,发现即使对于递归引用,单个BinaryFormatter Serialize()或Deserialize()调用中的所有引用都会被维护。

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

提前致谢。

TL;博士; version – BinaryFormatter始终保留引用。

BinaryFormatter是“图形序列化器”的事实与“它保留参考”同义,因为这是精确再现图形所必需的。 另一种选择是序列化器( 大多数是它们; XmlSerializerDataContractSerializer (没有启用特定选项), JavascriptSerializer和没有AsReference protobuf-net都是基于树的)。 树序列化程序通常保留引用(除非它们使用一些技巧,即如果启用全图模式, DataContractSerializer执行什么操作,或者使用AsReference执行protobuf-net)。 树序列化器(没有启用伏都教)倾向于在一个带有递归模型的混乱中爆炸,这使得它们很容易被发现。