我正在尝试将.NET TimeSpan
对象序列化为XML,但无法正常工作。一个快速的谷歌建议,虽然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?