我有一个类DocumentMetaData,我正在尝试序列化为XML。它是一个公共类,其中的所有元素都是公共的,但有一个元素不会出现在XML输出中,但应该是。 (另一个用XmlIgnore标记。)我试图找出为什么跳过这个元素。
public class DocumentMetaData
{
[XmlElement(ElementName="docType")]
public string DocType { get; set; }
[XmlElement(ElementName = "companyName")]
public string CompanyName { get; set; }
[XmlElement(ElementName = "countryName")]
public string CountryName { get; set; }
[XmlElement(ElementName = "clientName")]
public string ClientName { get; set; }
[XmlElement(ElementName = "manufacturer")]
public string Manufacturer { get; set; }
[XmlIgnore]
public DateTime ConversionDate { get; set; }
[XmlElement(ElementName = "conversionDate")]
public string ConversionDateString
{
get { return ConversionDate.ToShortDateString(); }
}
}
生成的XML如下所示:
<docMeta>
<docType>Text</docType>
<companyName>Text</companyName>
<countryName>Text</countryName>
<clientName>Text</clientName>
<manufacturer>Text</manufacturer>
</docMeta>
如果在调用序列化之前检查数据,则所有字段都包含值。为什么ConversionDateString字段没有序列化?
答案 0 :(得分:5)
您的属性需要序列化的setter。否则你会如何反序列化呢?
您可以将string
解析为DateTime
并分配到设置者中的ConversionDate
。