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
。
我有一个 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
。