Форматирование дат при сериализации объекта в C # (2.0) - PullRequest
3 голосов
/ 03 июня 2010

Я xml-сериализую объект с большим количеством свойств, и у меня есть два свойства с типами DateTime. Я хотел бы отформатировать даты для сериализованного вывода. Я действительно не хочу реализовывать интерфейс IXmlSerializable и перезаписывать сериализацию для каждого свойства. Есть ли другой способ добиться этого?

(я использую C #, .NET 2)

Спасибо.

Ответы [ 2 ]

5 голосов
/ 03 июня 2010

Для сериализации 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 голос
/ 03 июня 2010

Вы можете использовать класс / структуру оболочки для DateTime, который переопределяет ToString метод.

public struct CustomDateTime
{
    private readonly DateTime _date;

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

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