我是xml序列化具有大量属性的对象,我有两个DateTime类型的属性。我想格式化序列化输出的日期。我真的不想实现IXmlSerializable接口并覆盖每个属性的序列化。还有其他方法可以达到这个目的吗?
(我正在使用C#,. NET 2)
感谢。
答案 0 :(得分:5)
对于XML序列化,您必须实现IXmlSerializable
而不是ISerializable
。
但是,您可以使用帮助器属性并使用DateTime
属性标记XmlIgnore
属性来解决此问题。
public class Foo
{
[XmlIgnore]
public DateTime Bar { get; set; }
public string BarFormatted
{
get { return this.Bar.ToString("dd-MM-yyyy"); }
set { this.Bar = DateTime.ParseExact(value, "dd-MM-yyyy", null); }
}
}
答案 1 :(得分:1)
您可以使用覆盖DateTime
方法的ToString
包装类/结构。
public struct CustomDateTime
{
private readonly DateTime _date;
public CustomDateTime(DateTime date)
{
_date = date;
}
public override string ToString()
{
return _date.ToString("custom format");
}
}