XmlConvert и обнуляемые результаты?
В моем проекте я получаю XmlElement, из которого мне нужно разобрать несколько свойств обратно в класс.
Для их отображения я использую класс XmlConvert. Но источником, являющимся XML, часто являются пустые узлы или узлы, которые не читаются. Вместо того, чтобы выдавать кучу ошибок, я хочу вернуть NULL для хранения в моем классе.
Я начал создавать класс XmlConvertExtentions, который работает в следующем духе:
public static class XmlConvertExtentions
{
public static int? ToNullableInt32 (this XmlConvert c, string s){
try{ return XmlConvert.ToInt32(s); }
catch{ return null; }
}
}
Я твердо верю, что я не первый разработчик, нуждающийся в такой функциональности, и мне интересно, не изобретаю ли я еще одно колесо.
Кроме того, я чувствую, что изобрел действительно ужасное колесо. Попытка поймать чувствует себя плохо. Есть ли способ лучше?
--РЕДАКТИРОВАТЬ--
И теперь я также заметил, что это даже не работает:P
Я думаю, это потому, что вы не можете расширять статические классы.
2 ответа
Если узел является нулевым или пустым, что является s
?
Как насчет просто:
if(string.IsNullOrEmpty(s)) return null;
return XmlConvert.ToInt32(s);
Также обратите внимание, что LINQ-to-XML имеет более изящную обработку этих преобразований (посредством приведения).
Я не знаю, возможно ли это в вашем случае / ситуации, но вы уже использовали классы XML-сериализации и десериализовали XML с помощью классов XmlSerializer непосредственно в экземпляры вашего пользовательского класса вместо того, чтобы делать все это вручную?