Proč typ TimeSpan nepodporuje XML serializaci ?

Máte-li třídu která obsahuje property typu TimeSpan a tu serializujete do XML pomocí XmlSerializeru, není hodnota této property serializována. Přitom třída XmlConvert podporuje korektní konverzi timespan typu z/do XML formátu. Problém lze obejít vlastní strukturou SerializableTimeSpan, která podporuje XML serializaci implementací interface IXmlSerializable a implicitní konverzí na TimeSpan pro snadné použití.

  public struct SerializableTimeSpan : IXmlSerializable
  {
    private TimeSpan value;

    public static implicit operator SerializableTimeSpan(TimeSpan value)
    {
      return new SerializableTimeSpan { value = value };
    }

    public static implicit operator TimeSpan(SerializableTimeSpan value)
    {
      return value.value;
    }

    public XmlSchema GetSchema()
    {
      return null;
    }

    public void ReadXml(XmlReader reader)
    {
      value = XmlConvert.ToTimeSpan(reader.ReadElementContentAsString());
    }

    public override string ToString()
    {
      return value.ToString();
    }

    public void WriteXml(XmlWriter writer)
    {
      writer.WriteValue(XmlConvert.ToString(value));
    }
  }

Otázkou zůstává, proč se Microsoft tak brání přidat podporu XML serializace do TimeSpan ? V Microsoft Connect jsou nejméně dva (zde a zde) požadavky. V prvním případě zamítnut a v druhém nesmyslně označen jako Fixed. Opravdu je takový problém implementovat podporu pro serializaci tohoto typu ?

Komentáře jsou uzavřeny