Pregunta

Tengo un servicio web de terceros que devuelve este XML

<book>
  <release_date>0000-00-00</release_date>
</book>

Estoy tratando de deserializar en esta clase

public class Book
{
    [XmlElement("release_date")]
    public DateTime ReleaseDate { get; set; }
}

Pero debido a que no es un 0000-00-00 DateTime válida, aparece un FormatException. ¿Cuál es la mejor manera de manejar esto?

¿Fue útil?

Solución

Si el esquema tercera Parte define como aquel campo de fecha y hora, entonces siempre debe contener un valor de fecha y hora válida a menos que algo va mal. En este caso, puede considerar deserializar como una cadena

public class Book
{
    [XmlElement("release_date")]
    public string ReleaseDate { get; set; }

    public DateTime? GetReleaseDate 
    { 
      get 
      {
           // parse ReleaseDate datetime string
           // return the value; or null if the string contains invalid datetime.
      }
    }
}

Otros consejos

public class Book
{
    [XmlElement("release_date")]
    public string StringReleaseDate
    {
        get {return ReleaseDate.ToString("yyyy-MM-dd");}
        set {ReleaseDate = DateTime.ParseExact(value, "yyyy-MM-dd");}
    }

    [XmlIgnore]
    public DateTime ReleaseDate {get;set;}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top