有没有办法让 XmlSerializer 默认忽略所有成员,除非我另有说明?
我有一个基类和几个具有很多成员的派生类,但大多数我不想被序列化。只有少数几个可以接受序列化。
最佳答案
不,你不能这样做。
XmlSerializer 使用“选择退出”过程 - 它将序列化所有内容(所有公共(public)属性),除非您使用 [XmlIgnore]
属性明确选择退出。没有办法改变这种行为。
另一方面,.NET 3.5 DataContractSerializer 采用另一种方法 - 选择加入。它不会序列化任何内容,除非您通过使用 [DataMember]
装饰您的成员来明确告诉它这样做。
那么也许 DataContract 序列化程序适合您?它还有一些优点(不需要无参数构造函数,也可以序列化内部和私有(private)属性,如果需要,它还可以序列化字段而不是属性),并且它针对速度进行了调整。也有一些缺点 - 它不支持 XML 节点中的属性 - 因此您必须根据您的要求进行选择。
Dan Rigsby 对两者进行了很好的比较- 检查一下!
马克
关于c# - .NET XmlIgnore 默认情况下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1495716/