У меня есть класс, который выглядит так (сильно упрощенный):
public class Foo
{
public enum Value
{
ValueOne,
ValueTwo
}
[XmlAttribute]
public Value Bar { get; set; }
}
Я получаю файл XML из внешнего источника. В их документации указано, что элемент Foo всегда будет иметь только «ValueOne» или «ValueTwo» в атрибуте Bar (они не предоставляют XSD).
Итак, я десериализую это так:
var serializer = new XmlSerializer(typeof(Foo));
var xml = "<Foo Bar=\"ValueTwo\" />";
var reader = new StringReader(xml);
var foo = (Foo)serializer.Deserialize(reader);
... и все работает.
Однако прошлой ночью мне прислали XML-код, похожий на этот, и моя десериализация не удалась (как и должно быть):<Foo Bar="" />
Есть ли хороший способ защитить код вокруг этого? В идеале я хотел бы сказать что-то вроде «по умолчанию ValueOne, если что-то пойдет не так». Я не хочу выбрасывать весь файл XML, потому что один атрибут был искажен.