J'essaie de sérialiser un TimeSpanobjet .NET en XML et cela ne fonctionne pas. Un rapide google a suggéré que bien qu'il TimeSpansoit sérialisable, le XmlCustomFormatterne fournit pas de méthodes pour convertir des TimeSpanobjets vers et depuis XML.
Une approche suggérée consistait à ignorer le TimeSpanpour la sérialisation, et à la place sérialiser le résultat de TimeSpan.Ticks(et l'utiliser new TimeSpan(ticks)pour la désérialisation). Un exemple de ceci suit:
[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); }
}
}
Bien que cela semble fonctionner dans mes brefs tests - est-ce la meilleure façon d'y parvenir?
Existe-t-il un meilleur moyen de sérialiser un TimeSpan vers et depuis XML?