Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CodeDom和集合初始值设定项_C#_Code Generation_Codedom_Object Initializers - Fatal编程技术网

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

有没有办法使用C#CodeDom生成字典初始值设定项?有人支持吗

我希望:

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+" }");