FormatExceptions Manipolazione utilizzando XmlSerializer.Deserialize
-
21-09-2019 - |
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?
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