0

我想使用 TryGetValue 方法访问字典保险箱上的某个属性。

例如,我将直接访问这样的条目:

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

有什么方便的方法吗?

4

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 回答