为什么字典<键,值>不能序列化?或者可以吗?



(Havent发现了一个问题(。

为什么词典不能序列化?

大多数资源、网站、博客等都表示它无法序列化。然而,阅读"CLR via C#"第三版,第664页给出了Dictionary作为对象图的示例,可以序列化。

请注意,本章讨论二进制序列化。那么,它可以使用BinaryFormatter进行序列化,但不能进行XML序列化吗?

还是IDictionary和Dictionary之间有什么区别?

澄清。。。在什么情况下可以序列化Dictionary,在哪些情况下可以不序列化Dictionary。

谢谢。

我认为这只是Microsoft的XML序列化程序(System.Xml.Serialization.XmlSerializer(的一个限制。大多数其他序列化程序将支持字典。

这不是序列化的一般限制,甚至不是xml序列化,只是该实现的限制。CCD_ 2总体上相当弱。

原因如下:

对象是由内而外重构的,在反序列化过程中调用方法可能会产生不希望的副作用,因为调用的方法可能引用了在进行调用时尚未反序列化的对象引用。如果正在反序列化的类实现IDeserializationCallback,则在反序列化整个对象图时将自动调用OnSerialization方法。此时,所有引用的子对象都已完全恢复。哈希表是一个典型的类示例,如果不使用上述事件侦听器,很难对其进行反序列化。在反序列化过程中很容易检索键/值对,但将这些对象添加回哈希表可能会导致问题,因为无法保证从哈希表派生的类已被反序列化。因此,在此阶段对哈希表调用方法是不可取的

最新更新