(Havent发现了一个问题(。
为什么词典不能序列化?
大多数资源、网站、博客等都表示它无法序列化。然而,阅读"CLR via C#"第三版,第664页给出了Dictionary作为对象图的示例,可以序列化。
请注意,本章讨论二进制序列化。那么,它可以使用BinaryFormatter进行序列化,但不能进行XML序列化吗?
还是IDictionary和Dictionary之间有什么区别?
澄清。。。在什么情况下可以序列化Dictionary,在哪些情况下可以不序列化Dictionary。
谢谢。
我认为这只是Microsoft的XML序列化程序(System.Xml.Serialization.XmlSerializer
(的一个限制。大多数其他序列化程序将支持字典。
这不是序列化的一般限制,甚至不是xml序列化,只是该实现的限制。CCD_ 2总体上相当弱。
原因如下:
对象是由内而外重构的,在反序列化过程中调用方法可能会产生不希望的副作用,因为调用的方法可能引用了在进行调用时尚未反序列化的对象引用。如果正在反序列化的类实现IDeserializationCallback,则在反序列化整个对象图时将自动调用OnSerialization方法。此时,所有引用的子对象都已完全恢复。哈希表是一个典型的类示例,如果不使用上述事件侦听器,很难对其进行反序列化。在反序列化过程中很容易检索键/值对,但将这些对象添加回哈希表可能会导致问题,因为无法保证从哈希表派生的类已被反序列化。因此,在此阶段对哈希表调用方法是不可取的