CodeDom和集合初始化程序

时间:2010-06-15 20:13:55

标签: c# code-generation codedom object-initializers

有没有办法使用C#CodeDom生成字典初始值设定项?是否支持这些?

我想:

private IDictionary<string, string> map = new Dictionary<string, string>
{
    { "Name", "Value" },
    ...
};

2 个答案:

答案 0 :(得分:5)

使用CodeDom构造无法做到这一点。它们未针对集合初始化程序进行更新。

LukeH有一篇关于3.5特性和CodeDom

主题的优秀博客文章

答案 1 :(得分:1)

您可以执行此操作,但这可能是有史以来最糟糕的噩梦。.这是我当前的操作方式。 (更新了我的答案以反映问题)

var constructDictionary = new CodeMemberField("Dictionary<string, string> map", @" = new Dictionary<string, string>()
{
   { Name, Value },
}");

这也可以再次充斥其黑客行为。

string builder += " = new Dictionary<string, string>(){";
for(int i = 0; i < 10; i++)
{
   builder+="{ Name"+i+", Value"+i+" }";
}
var constructDictionary = new CodeMemberField("Dictionary<string, string> map", builder+" }");