有没有办法让 XmlSerializer 默认忽略所有成员,除非我另有说明?
我有一个基类和几个带有大量成员的派生类,但大多数我不想被序列化。只有少数几个可以接受序列化。
不,你不能这样做。
XmlSerializer 使用“选择退出”过程 - 它将序列化所有内容(所有公共属性),除非您使用[XmlIgnore]
属性。没有办法改变这种行为。
另一方面,.NET 3.5 DataContractSerializer 采用另一种方法 - 选择加入。它不会序列化任何东西,除非你特别告诉它,通过装饰你的成员[DataMember]
.
那么也许 DataContract 序列化器适合您?它还有一些优点(不需要无参数构造函数,也可以序列化内部和私有属性,如果需要,它还可以序列化字段而不是属性),并且它针对速度进行了调整。它也有一些缺点 - 它不支持 XML 节点中的属性 - 因此您必须根据您的要求进行选择。
两者之间有很好的比较丹·里格斯比 http://www.danrigsby.com/blog/index.php/2008/03/07/xmlserializer-vs-datacontractserializer-serialization-in-wcf/- 一探究竟!
Marc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)