簡體   English   中英

如何將項添加到Dictionary <string,Dictionary <string,object >>?

[英]How to I add an item to a Dictionary<string, Dictionary<string, object>>?

我希望我的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, ???);
    }

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

??? 可以填寫:

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

這會工作:

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

使用元組作為鍵(即沒有嵌套字典,但只是合並鍵)並再次添加變得簡單,或者您需要檢查是否存在moduleKey,如果不是,則首先創建一個新的空字典。

如果可能的話,使用元組鍵而不是嵌套字典 - 然后唯一的問題就是唯一地識別模塊的所有成員,如果你處理的合理的小集合只有幾千個元素,你就可以放心地力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM