Обработка форматехпений с использованием xmlserializer.deserialize

StackOverflow https://stackoverflow.com/questions/2485650

Вопрос

У меня есть сторонняя веб -служба, которая возвращает этот 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, Я получаю формат. Как лучше всего справиться с этим?

Это было полезно?

Решение

Если сторонняя схема определяет это поле как DateTime, то она всегда должна содержать действительное значение DateTime, если что -то не пойдет не так. В этом случае вы можете подумать о том, чтобы десериализировать его как строку

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

Другие советы

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;}
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top