![](/img/trans.png)
[英]How can I make my Dictionary add another item (Image), <string, string, image>?
[英]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.