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

在C#(2.0)中序列化对象时格式化日期,c#,datetime,xml-serialization,C#,Datetime,Xml Serialization,我正在用xml序列化一个具有大量属性的对象,我有两个具有DateTime类型的属性。我想格式化序列化输出的日期。我真的不想实现IXmlSerializable接口并覆盖每个属性的序列化。有没有其他方法可以做到这一点 (我使用的是C#,.NET2) 谢谢。您可以为DateTime使用覆盖ToString方法的包装类/结构 public struct CustomDateTime { private readonly DateTime _date; public CustomDat

我正在用xml序列化一个具有大量属性的对象,我有两个具有DateTime类型的属性。我想格式化序列化输出的日期。我真的不想实现IXmlSerializable接口并覆盖每个属性的序列化。有没有其他方法可以做到这一点

(我使用的是C#,.NET2)


谢谢。

您可以为
DateTime
使用覆盖
ToString
方法的包装类/结构

public struct CustomDateTime
{
    private readonly DateTime _date;

    public CustomDateTime(DateTime date)
    {
        _date = date;
    }

    public override string ToString()
    {
        return _date.ToString("custom format");
    }
}

对于XML序列化,您必须实现
IXmlSerializable
而不是
ISerializable

但是,您可以通过使用helper属性并使用
XmlIgnore
属性标记
DateTime
属性来解决此问题

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

是的,它是IXmlSerializable-是在匆忙中输入的…-更正。谢谢