0

TryGetValue メソッドを使用して、辞書セーフレイの特定のプロパティにアクセスしたいと考えています。

たとえば、次のように直接アクセスするエントリ:

jsonObject[prop1][prop2][0][prop3]

これを行う便利な方法はありますか?

4

1 に答える 1

1

これが1つのアイデアです(テストされていません)。IDictionary少なくとも指定されたキーの数と同じくらいの深さでネストされていることを前提としており、動作しobjectます (もちろん、これをジェネリックにすることもできます)。

bool TryGetNestedValue (this IDictionary dict, out object value, 
    params object[] keys)
{
    for(int i = 0; i < keys.Length; i++)
    {
        var key = keys[i];

        if (!dict.Contains(key))
        {
            value = null;
            return false;
        }

        if (i == keys.Length - 1)
        {
            value = dict[key];
            return true;
        }

        dict = dict[key];
    }

    throw new ArgumentException("keys");
}
于 2013-03-21T13:18:28.737 に答える