我使用.NET 3.5SP1和DataContractSerializer来序列化一个类。在SP1中,他们更改了行为,因此您不必在类上包含DataContract / DataMember属性,它只是序列化整个事物。这是我正在使用的行为,但现在我需要忽略序列化程序中的一个属性。我知道一种方法是将DataContract属性添加到类中,并将DataMember属性放在我想要包含的所有成员上。不过,我有理由认为这对我不起作用。
所以我的问题是,是否有一个属性或者我可以使用什么来使DataContractSerializer忽略属性?
答案 0 :(得分:162)
答案 1 :(得分:147)
此外,DataContractSerializer将序列化标记为[Serializable]的项目,并将序列化.NET 3.5 SP1及更高版本中未标记的类型,以支持序列化匿名类型。
所以,这取决于你如何装饰你的班级如何阻止一个成员序列化:
[DataContract]
,请删除该属性的[DataMember]
。[Serializable]
,请在属性的字段前面添加[NonSerialized]
。[IgnoreDataMember]
添加到该媒体资源中。答案 2 :(得分:30)
在XML序列化中,您可以使用[XmlIgnore]属性(System.Xml.Serialization.XmlIgnoreAttribute)在序列化类时忽略属性。
这可能对您有用(或者在尝试查找如何在XML中序列化时忽略属性时,任何发现此问题的人都可以使用它。)
答案 3 :(得分:1)
尝试使用[NonSerialized()]属性标记字段。这将告诉序列化程序忽略该字段。
https://msdn.microsoft.com/en-us/library/system.nonserializedattribute(v=vs.110).aspx
答案 4 :(得分:0)
您所说的与此位置的MSDN库中的内容相冲突:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx
我没有看到您提及的SP1功能。