3

有没有办法使用 C# CodeDom 生成字典初始化程序?那些都支持吗?

我想拥有:

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

2 回答 2

5

使用 CodeDom 构造是不可能的。它们没有针对集合初始值设定项进行更新。

LukeH 有一篇关于 3.5 特性和 CodeDom 主题的优秀博文

于 2010-06-15T20:17:50.447 回答
1

你可以做到,但这可能是有史以来最糟糕的噩梦。这就是我目前的做法。(更新了我的答案以反映问题)

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

这也可以再次填充它的hackish。

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+" }");
于 2018-11-03T21:58:48.540 回答