Я пытаюсь сериализовать объект .NET TimeSpan в XML, и он не работает. Быстрый google предположил, что, хотя TimeSpan является сериализуемым, XmlCustomFormatter не предоставляет методы для преобразования объектов TimeSpan в и из XML.
Один предложенный подход состоял в том, чтобы игнорировать TimeSpan для сериализации и вместо этого сериализовать результат TimeSpan.Ticks (и использовать new TimeSpan(ticks) для десериализации). Пример этого следует:
[Serializable]
public class MyClass
{
// Local Variable
private TimeSpan m_TimeSinceLastEvent;
// Public Property - XmlIgnore as it doesn't serialize anyway
[XmlIgnore]
public TimeSpan TimeSinceLastEvent
{
get { return m_TimeSinceLastEvent; }
set { m_TimeSinceLastEvent = value; }
}
// Pretend property for serialization
[XmlElement("TimeSinceLastEvent")]
public long TimeSinceLastEventTicks
{
get { return m_TimeSinceLastEvent.Ticks; }
set { m_TimeSinceLastEvent = new TimeSpan(value); }
}
}
Пока это работает в моем кратком тестировании - это лучший способ достичь этого?
Есть ли лучший способ сериализации TimeSpan для и из XML?