[英]How can I ignore a property with the DataContractSerializer (can't delete DataMember)?
[英]How can I ignore a property when serializing using the DataContractSerializer?
我正在使用 .NET 3.5SP1 和DataContractSerializer
来序列化一个类。 在 SP1 中,他们更改了行为,因此您不必在类中包含DataContract
/ DataMember
属性,它只会序列化整个事物。 这是我正在使用的行为,但现在我需要忽略序列化程序中的一个属性。 我知道这样做的一种方法是将DataContract
属性添加到类,并将DataMember
属性放在我想要包含的所有成员上。 不过,我有理由认为这对我不起作用。
所以我的问题是,是否有一个属性或什么东西可以用来让DataContractSerializer
忽略一个属性?
您可能正在寻找IgnoreDataMemberAttribute
。
此外,DataContractSerializer 将序列化标记为 [Serializable] 的项目,还将序列化 .NET 3.5 SP1 及更高版本中未标记的类型,以支持序列化匿名类型。
因此,这取决于您如何装饰类以防止成员序列化:
[DataContract]
,则删除该属性的[DataMember]
。[Serializable]
,则在该属性的字段前添加[NonSerialized]
。[IgnoreDataMember]
添加到属性中。在 XML 序列化中,您可以使用 [XmlIgnore] 属性 (System.Xml.Serialization.XmlIgnoreAttribute) 在序列化类时忽略属性。
这可能对你有用(或者它可能对任何在尝试找出在 XML 中序列化时如何忽略属性时发现这个问题的人有用,就像我一样)。
尝试使用 [NonSerialized()] 属性标记该字段。 这将告诉序列化程序忽略该字段。
https://msdn.microsoft.com/en-us/library/system.nonserializedattribute(v=vs.110).aspx
您所说的与此位置的 MSDN 库中所说的内容相冲突:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx
我没有看到您提到的 SP1 功能的任何提及。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.