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