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 непосредственно в экземпляры вашего пользовательского класса вместо того, чтобы делать все это вручную?

Другие вопросы по тегам