C# CodeDom和集合初始值设定项
有没有办法使用C#CodeDom生成字典初始值设定项?有人支持吗 我希望:C# CodeDom和集合初始值设定项,c#,code-generation,codedom,object-initializers,C#,Code Generation,Codedom,Object Initializers,有没有办法使用C#CodeDom生成字典初始值设定项?有人支持吗 我希望: private IDictionary<string, string> map = new Dictionary<string, string> { { "Name", "Value" }, ... }; private IDictionary map=新字典 { {“名称”,“值”}, ... }; 这在使用CodeDom构造时是不可能的。它们未针对集合初始值设定项进行更新 L
private IDictionary<string, string> map = new Dictionary<string, string>
{
{ "Name", "Value" },
...
};
private IDictionary map=新字典
{
{“名称”,“值”},
...
};
这在使用CodeDom构造时是不可能的。它们未针对集合初始值设定项进行更新
LukeH有一篇关于3.5特性和CodeDom主题的优秀博客文章
- 你可以做到,但这可能是有史以来最糟糕的噩梦。。以下是我目前的做法。(更新我的答案以反映问题)
var constructDictionary=newCodeMemberField(“字典映射,@”=newDictionary()
{
{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+" }");
stringbuilder+=“=newdictionary(){”;
对于(int i=0;i<10;i++)
{
生成器+=“{Name”+i+”,值“+i+”}”;
}
var constructDictionary=newCodeMemberField(“字典映射”,builder+“}”);
恐怕情况就是这样。。。无论如何谢谢你!上面链接的博客文章解释了CodeDom没有针对“新”C#3.0功能进行更新,并给出了使用CSharpCodeProvider.CompileAsemblyFromSource
编译包含LINQ表达式的代码字符串的示例。
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+" }");