我的桌面应用程序使用XmlSerializer来序列化对象.有人建议我改用DataContractSerializer

非常感谢

comments

推荐答案

丹·里格斯比有一篇关于这个的终极帖子——go 读吧!

XmlSerializer vs. DataContractSerializer (web archive)

他说了所有要说的话,而且非常有说服力.

简而言之:

XmlSerializer:

  • 已经存在很长时间了
  • 是" Select 退出";所有公共内容都会被序列化,除非您告诉它不要([XmlIgnore])

DataContractSerializer是:

  • 镇上的新来的子元素
  • 针对速度进行了优化(通常比XmlSerializer快10%左右)
  • " Select 加入"——只有你特别标记为[DataMember]的内容才会被序列化
  • 但任何标记为[DataMember]的内容都将被序列化——不管是public还是private
  • 不支持XML属性(出于速度原因)

.net相关问答推荐

从Couchbase删除_txn文档的推荐方法?""

为什么$NULL在ForEach-Object{}和Foreach()中的行为不同?

如何使用AWS Lambda函数制作网络挂钩?

F#:跨度、提升和底部类型(或缺乏)

如何判断属性设置器是否公开

如何获取控制台应用程序的执行目录

log4net 与 TraceSource

在 WinForms 应用程序中查找焦点控件的首选方法是什么?

读取方法的属性值

如何将 NuGet 与 Visual C# Express 一起使用?

所有数组在 C# 中都实现了哪些接口?

迭代器和枚举器的区别

List 和 IEnumerable 的实际区别

在 C#/.NET 中组合路径和文件名的最佳方法是什么?

清除文件内容

并发字典正确用法

WebClient.DownloadString 由于编码问题导致字符损坏,但浏览器正常

MailMessage,Sender 和 From 属性的区别

任何人都知道缺少枚举通用约束的好方法吗?

App.config:用户与应用程序范围