c# - .NET XmlIgnore 默认情况下?

标签 c# xml-serialization

有没有办法让 XmlSerializer 默认忽略所有成员,除非我另有说明?

我有一个基类和几个具有很多成员的派生类,但大多数我不想被序列化。只有少数几个可以接受序列化。

最佳答案

不,你不能这样做。

XmlSerializer 使用“选择退出”过程 - 它将序列化所有内容(所有公共(public)属性),除非您使用 [XmlIgnore] 属性明确选择退出。没有办法改变这种行为。

另一方面,.NET 3.5 DataContractSerializer 采用另一种方法 - 选择加入。它不会序列化任何内容,除非您通过使用 [DataMember] 装饰您的成员来明确告诉它这样做。

那么也许 DataContract 序列化程序适合您?它还有一些优点(不需要无参数构造函数,也可以序列化内部和私有(private)属性,如果需要,它还可以序列化字段而不是属性),并且它针对速度进行了调整。也有一些缺点 - 它不支持 XML 节点中的属性 - 因此您必须根据您的要求进行选择。

Dan Rigsby 对两者进行了很好的比较- 检查一下!

马克

关于c# - .NET XmlIgnore 默认情况下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1495716/

相关文章:

c# - 使用重载构造函数时对象实例化失败

c# - 如何将多个表中的数据显示到dataGridView

c# - XmlSerializer : The string '' is not a valid AllXsd value

C# [XmlElement] 属性不隐式转换类型?

c# - 如何将任何应用程序的选定文本放入 Windows 窗体应用程序

c# - 使用 ASP.NET 使用数据表对数据进行分组

c# - 查找已安装的浏览器。微软边缘

iphone - 如何在IOS中将xml文档转换为NSString

c# - 如何使 ShouldSerialize*() 仅适用于 XML 而不是 JSON 序列化?

c# - XML 序列化和 DefaultValue ("") c# 中的相关问题