2013-03-21 71 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"); 
} 
相關問題