我的桌面应用程序使用 XmlSerializer
序列化对象。建议我改用 DataContractSerializer
。
在哪些场景下应该使用 DataContractSerializer
?
非常感谢
评论。
1. 输出的XML文件存储在本地。没有其他应用程序从该 XML 文件反序列化对象。
2. 我的应用程序使用 .NET Framework 3.5 SP1 运行。
最佳答案
Dan Rigsby 有关于此问题的终极帖子 - 请阅读它!
XmlSerializer vs. DataContractSerializer (web archive)
他以一种非常令人信服的方式说出了所有要说的。
简而言之:
XmlSerializer:
- 已经存在很长时间了
- 是“选择退出”;所有公共(public)内容都会被序列化,除非你告诉它不要这样做([XmlIgnore])
DataContractSerializer 是:
- 镇上的新来的 child
- 针对速度进行了优化(通常比 XmlSerializer 快 10% 左右)
- “选择加入” - 只有您专门标记为
[DataMember]
的内容才会被序列化 - 但任何用
[DataMember]
标记的内容都将被序列化 - 无论是public
还是private
- 不支持 XML 属性(出于速度原因)
关于.net - DataContractSerializer 与 XmlSerializer : Pros and Cons of each serializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2505778/