【发布时间】:2012-01-10 16:17:55
【问题描述】:
(还没有发现问这个的问题)。
为什么字典不能序列化?
大多数资源、网站、博客等都说它不能被序列化。但是阅读“CLR via C#”第 3 版,第 664 页将 Dictionary 作为对象图的示例,可以序列化。
请注意,本章讨论的是二进制序列化。那么是不是可以用BinaryFormatter序列化,却不能用XML序列化?
或者我在 IDictionary 和 Dictionary 之间缺少一些区别?
澄清一下……字典在什么情况下可以序列化,什么情况下不能序列化。
谢谢。
【问题讨论】:
-
你想用什么序列化?不同的序列化器会以不同的方式对待不同的类型,所以你可以将一个
Dictionary<TKey, TValue>序列化为XAML,例如是XML,但你不能用XmlSerializer序列化它... -
同样,您提到“二进制序列化”; BinaryFormatter 和 NetDataContractSerializer(以及,就此而言,protobuf-net)都是二进制序列化器,但可能表现不同。 “什么序列化程序”是这里的关键。
-
那只能用来序列化某些类型吗?我知道序列化“管道”检查对象是否从 IDictionary 派生,然后禁用该对象的序列化。 stackoverflow.com/questions/1573922/…(见第一个答案中的引用)。
-
除非您先定义“它”,否则我们无法回答这个问题。如果 "it"====XmlSerializer,那么:确实,这将是一个问题。
-
好的,所以在序列化为 XML 时有限制吗?
标签: .net generics serialization dictionary