2013-03-21 33 views
0

我想用TryGetValue方法访问字典safelay上的某个属性。可以在深层嵌套字典上使用TryGetValue吗?

例如一个条目我会直接访问这样的:

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

有任何方便的方式这样做呢?

+1

你期望它做如果价值不存在?什么类型是'jsonObject'? – 2013-03-21 13:14:40

回答

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"); 
} 
相关问题