2013-03-21 3 views
0

TryGetValue 메서드를 사용하여 사전 safelay의 특정 속성에 액세스하려고합니다.중첩 된 사전에 TryGetValue를 사용할 수 있습니까?

예를 들어 내가 직접이 같은 액세스 할 항목 :

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

그렇게 할 수있는 편리한 방법이 있나요?

+1

당신이이 경우 수행 할 것으로 예상하는 일을 가치가 존재하지 않습니까? 그리고'jsonObject'는 어떤 타입입니까? –

답변

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"); 
}