Domanda

Ho un servizio web di terze parti che restituisce questo xml

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

Sto cercando di deserializzare in questa classe

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

Ma perché 0000-00-00 non è un DateTime valida, ho un FormatException. Qual è il modo migliore per gestire questo?

È stato utile?

Soluzione

Se lo schema 3rd party definisce tale campo come datetime, allora dovrebbe sempre contenere un valore datetime valido a meno che qualcosa va storto. In questo caso, si può considerare di deserializzare come una stringa

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.
      }
    }
}

Altri suggerimenti

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;}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top