我有第三方网络服务,返回此xml
<book>
<release_date>0000-00-00</release_date>
</book>
我正在尝试将其反序列化为此类
public class Book
{
[XmlElement("release_date")]
public DateTime ReleaseDate { get; set; }
}
但是因为0000-00-00
不是有效的DateTime
,所以我得到了一个FormatException。处理这个问题的最佳方法是什么?
答案 0 :(得分:4)
如果第三方架构将该字段定义为日期时间,则除非出现问题,否则它应始终包含有效的日期时间值。 在这种情况下,您可以考虑将其反序列化为字符串
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.
}
}
}
答案 1 :(得分:2)
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;}
}