8

たとえば、LinqToXML を使用している場合など、(多くの) null 参照を処理するためのより良い/より短い方法はありますか?

私はそれを非常にうまく処理する XElement の拡張機能を書きましたが、別の方法があるのでしょうか?

そして、関数名はどうですか?「そして」は実際には説明的ではありません。

public static class XmlExtentions
{
    public static T And<T>(this T obj, Func<T, T> action) where T : XElement
    {
        return obj == null ? obj : action(obj);
    }
}

internal class Program
{
    private static void Main()
    {
        //create example xml element
        var x = 
          XElement.Parse("<root><find><name>my-name</name></find></root>");

        //old way
        var test1 = x.Element("find");
        if (test1 != null) test1 = test1.Element("name");
        Console.WriteLine(test1);

        //using the extentions method
        var test2 = x.Element("find").And(findme => findme.Element("name"));
        Console.WriteLine(test2);

        Console.ReadLine();
    }
}

PS: この例で XPath を使用できることはわかっていますが、より複雑なケースでは常にそうとは限りません。

4

1 に答える 1