C# 序列化程序跳过 属性

C# serializer skipping a property

我有一个 class,DocumentMetaData,我正在尝试将其序列化为 XML。它是一个 public class 并且其中的所有元素都是 public,但是有一个元素没有出现在 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 字段没有序列化?

您的 属性 需要 setter 进行序列化。否则你将如何反序列化它?

您可以将 string 解析为 DateTime 并分配给 setter 中的 ConversionDate