c# - 如何将项目添加到 Dictionary<string, Dictionary<string, object>>?

标签 c# collections dictionary

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

关于c# - 如何将项目添加到 Dictionary<string, Dictionary<string, object>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1172692/

相关文章:

c# - 支持移除项的线程安全集合

c++ - 字段无法重新排序,而它显然在那里! (实现一个 map.h)

java - 用于管理动态属性集的 JMX MBean

c# - 在新的 Windows 10 CalendarView 上显示/设计额外信息

c# - 并发下的 Queue<T> 为不同的类型提供不同的结果

java - List<Object> 到 Map<String, Map<String,List<Object>>>

python - 如何解决需要更新字典的问题

c# - 如何在无限循环中使用线程锁?

c# - 从方法返回内存流

c# - 自定义错误处理 ASP.NET