Я пытаюсь сериализовать объект .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?