如何将实体添加到Dictionary Object Initializer?

时间:2012-10-29 11:32:34

标签: c#-4.0

我需要传递html属性。

可以像这样包装成一个表达式代码吗?

var tempDictionary = new Dictionary<string, object> { 
   { "class", "ui-btn-test" }, 
   { "data-icon", "gear" } 
}.Add("class", "selected");

new Dictionary<string, object> ().Add("class", "selected").Add("diabled", "diabled");

1 个答案:

答案 0 :(得分:1)

您所指的是方法链。一个很好的例子是StringBuilder的Append方法。

StringBuilder b = new StringBuilder();
b.Append("test").Append("test");

这是可能的,因为Append方法返回StringBuilder对象

public unsafe StringBuilder Append(string value)

但是,在您的情况下,Dictionary<TKey, TValue>的Add方法标记为void

public void Add(TKey key, TValue value)

因此,不支持方法链接。但是,如果您真的想在添加新项目时使用方法链接,则可以随时自行滚动:

public static Dictionary<TKey, TValue> AddChain<TKey, TValue>(this Dictionary<TKey, TValue> d, TKey key, TValue value)
{
  d.Add(key, value);
  return d;
}

然后你可以编写以下代码:

Dictionary<string, string> dict = new Dictionary<string, string>()
  .AddChain("test1", "test1")
  .AddChain("test2", "test2");