2009-07-23 3 views
3
내 LayoutManager의 클래스의 사용자가이 쓸 수 있도록하려면

:Dictionary <string, Dictionary <string, object >>에 항목을 추가하는 방법은 무엇입니까?

LayoutManager layoutManager = new LayoutManager(); 
layoutManager.AddMainContentView("customers", "intro", 
    new View { Title = "Customers Intro", Content = "This is customers intro." }); 

그러나 구문 나는 아래 AddMainContentView()에 사전이 사전을 작성해야합니까?

public class LayoutManager 
{ 
    private Dictionary<string, Dictionary<string, object>> _mainContentViews = new Dictionary<string, Dictionary<string, object>>(); 
    public Dictionary<string, Dictionary<string, object>> MainContentViews 
    { 
     get { return _mainContentViews; } 
     set { _mainContentViews = value; } 
    } 

    public void AddMainContentView(string moduleKey, string viewKey, object view) 
    { 
     //_mainContentViews.Add(moduleKey, new Dictionary<string, object>(viewKey, view)); 
     //_mainContentViews.Add(moduleKey, viewKey, view); 
     _mainContentViews.Add(moduleKey, ???); 
    } 

    ... 
} 

답변

4
public void AddMainContentView(string moduleKey, string viewKey, object view) 
{ 
    Dictionary<string, object> viewDict = null; 
    if (!MainContentViews.TryGetValue(moduleKey, out viewDict)) { 
     viewDict = new Dictionary<string, object>(); 
     MainContentViews.Add(moduleKey, viewDict); 
    } 
    if (viewDict.ContainsKey(viewKey)) { 
     viewDict[viewKey] = view; 
    } else { 
     viewDict.Add(viewKey, view); 
    } 
} 
+0

의미에 따라 다음 중 하나를 선택하십시오. "viewDict [viewKey] = view;" 또는 "viewDict.Add (viewKey, view);" 하지만 둘 다 필요하지는 않습니다. 귀하의 의미는 이제 첫 번째 옵션과 동일합니다. –

+0

정확히 내가 쌓아야 할 것은 잘 작동합니다. 감사합니다. –

1

???

new Dictionary<string, object> { {viewKey, view} } 
1

겠습니까이 작품 : 충전 할 수있는 키 (즉, 어떤 중첩 된 사전, 단순히 병합 된 키)와 같은 튜플을 사용

public void AddMainContentView(string moduleKey, string viewKey, object view) 
{ 
    if (!_mainContentViews.ContainsKey(moduleKey)) 
    { 
     Dictionary<string, object> newModule = new Dictionary<string, object>(); 
     newModule.Add(viewKey, view); 

     _mainContentViews.Add(moduleKey, newModule); 
    } 
} 
0

어느 다시 한 번 추가하면 간단하게, 또는 moduleKey가 있는지 확인하고 처음으로 새 빈 사전을 작성해야합니다.

가능하면 중첩 된 사전이 아닌 튜플 키를 사용하십시오. 모듈의 모든 구성원을 고유하게 식별하는 유일한 문제입니다. 모듈 수가 몇 천 개를 초과하지 않는 합리적인 소규모 컬렉션을 처리하는 경우, 당신은 무차별 한 힘을 안전하게 지을 수 있습니다.

관련 문제