J'essaie de sérialiser un TimeSpan
objet .NET en XML et cela ne fonctionne pas. Un rapide google a suggéré que bien qu'il TimeSpan
soit sérialisable, le XmlCustomFormatter
ne fournit pas de méthodes pour convertir des TimeSpan
objets vers et depuis XML.
Une approche suggérée consistait à ignorer le TimeSpan
pour 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?