1

私のプロジェクトでは、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
静的クラスを拡張できないためだと思います。

4

2 に答える 2

1

ノードがnullまたは空の場合、何sですか?

ちょうどどうですか:

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

また、LINQ-to-XMLでは、これらの変換を(キャストを介して)より適切に処理できることにも注意してください。

于 2009-04-27T09:28:45.973 に答える
0

あなたのケース/状況でそれが可能かどうかはわかりませんが、XMLシリアル化クラスを使用して、XMLをすべて手動で行うのではなく、XmlSerializerクラスによってカスタムクラスのインスタンスに直接逆シリアル化することはすでにありますか?

于 2009-04-27T09:26:33.687 に答える