在C#(2.0)中序列化对象时格式化日期

时间:2010-06-03 10:10:09

标签: c# datetime xml-serialization

我是xml序列化具有大量属性的对象,我有两个DateTime类型的属性。我想格式化序列化输出的日期。我真的不想实现IXmlSerializable接口并覆盖每个属性的序列化。还有其他方法可以达到这个目的吗?

(我正在使用C#,. NET 2)

感谢。

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");
    }
}