通过 DataContractSerializer 跳过 DataMember
本文关键字:DataMember 跳过 DataContractSerializer 通过 | 更新日期: 2023-09-27 18:30:48
我有一个类:
[DataContract]
public class Result
{
[DataMember] public String Log {get; set;}
[DataMember] public String Data {get; set;}
}
我通过 WCF 发送这个类,它工作正常。但是我想在收到后将此类保存到 xml 文件中。我试着写:
var serializer = new DataContractSerializer(typeof (T),null,int.MaxValue,
false,true,null,new SharedTypeXmlResolver());
var settings = new XmlWriterSettings { Indent = true };
using (var backing = new StringWriter(CultureInfo.InvariantCulture))
{
using (var writer = XmlWriter.Create(backing, settings))
{
serializer.WriteObject(writer, result);
}
return backing.ToString();
}
但是我想将"日志"属性保存到XML文件,而不想保存"数据"属性。我该怎么做?
XmlIgnore 不适用于 DataContract 序列化。此合同是选择加入的,而不是可序列化是选择退出的。
使数据可选:
[DataMember(EmitDefaultValue = false)] public String Data {get; set;}
然后擦除数据:
result.Data = null;