有没有办法使用 C# CodeDom 生成字典初始化程序?那些都支持吗?
我想拥有:
private IDictionary<string, string> map = new Dictionary<string, string>
{
{ "Name", "Value" },
...
};
有没有办法使用 C# CodeDom 生成字典初始化程序?那些都支持吗?
我想拥有:
private IDictionary<string, string> map = new Dictionary<string, string>
{
{ "Name", "Value" },
...
};
使用 CodeDom 构造是不可能的。它们没有针对集合初始值设定项进行更新。
LukeH 有一篇关于 3.5 特性和 CodeDom 主题的优秀博文
你可以做到,但这可能是有史以来最糟糕的噩梦。这就是我目前的做法。(更新了我的答案以反映问题)
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+" }");