2009-07-23 104 views
3

我希望我的LayoutManager類的用戶能夠這樣寫:如何將項目添加到詞典<字符串,字典<字符串,對象>>?

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);」 但你並不需要兩者。你的語義現在相當於第一個選項。 – 2009-07-23 15:53:28

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是否存在,如果不是,先創建一個新的空字典。

如果可能的話,使用tuple-key而不是嵌套字典 - 唯一的問題就是唯一標識一個模塊的所有成員,如果你處理的合理小集合不超過幾千個元素,你可以安全地蠻力。

相關問題