c#序列化器跳过属性

本文关键字:属性 序列化 | 更新日期: 2023-09-27 18:18:38

我有一个类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字段不序列化?

c#序列化器跳过属性

你的属性需要一个setter来序列化。否则你怎么把它反序列化?

可以将string解析为DateTime,并在setter中分配给ConversionDate