XmlConvert и обнуляемые результаты? - PullRequest
1 голос
/ 27 апреля 2009

В моем проекте я получаю 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; }
    }
}

Я твердо верю, что я не первый разработчик, нуждающийся в такой функциональности, и мне интересно, не изобретаю ли я еще одно колесо.
Кроме того, я чувствую, что изобрел действительно ужасное колесо. Попытка поймать чувствует себя плохо. Есть ли лучший способ?

- EDIT -
И теперь я также заметил, что это даже не работает: P
Я думаю, это потому, что вы не можете расширять статические классы.

Ответы [ 2 ]

1 голос
/ 27 апреля 2009

Если узел нулевой или пустой, что такое s?

Как насчет просто:

if(string.IsNullOrEmpty(s)) return null;
return XmlConvert.ToInt32(s);

Также обратите внимание, что LINQ-to-XML более аккуратно обрабатывает эти преобразования (с помощью приведения).

0 голосов
/ 27 апреля 2009

Я не знаю, возможно ли это в вашем случае / ситуации, но вы уже использовали классы XML-сериализации и десериализовали XML с помощью классов XmlSerializer непосредственно в экземпляры вашего пользовательского класса вместо того, чтобы делать это? все вручную?

...