C#serializer跳过属性

Fra*_*uke 0 c# xml xml-serialization

我有一个类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(); }
  }
Run Code Online (Sandbox Code Playgroud)

}

生成的XML如下所示:

<docMeta>
    <docType>Text</docType>
    <companyName>Text</companyName>
    <countryName>Text</countryName>
    <clientName>Text</clientName>
    <manufacturer>Text</manufacturer>
</docMeta>
Run Code Online (Sandbox Code Playgroud)

如果在调用序列化之前检查数据,则所有字段都包含值.为什么ConversionDateString字段没有序列化?

Jak*_*rtz 5

您的属性需要一个序列化的setter.否则你会如何反序列化呢?

您可以解析stringto DateTimeConversionDate在setter中分配.