CodeDom and collection initializers

六月ゝ 毕业季﹏ 提交于 2019-12-05 02:27:58

问题


Is there a way to generate a dictionary initializer using the C# CodeDom? Are those supported at all?

I would like to have:

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

回答1:


This is not possible using the CodeDom constructs. They were not updated for collection initializers.

LukeH has an excellent blog post on the subject of 3.5 features and the CodeDom

  • http://blogs.msdn.com/b/lukeh/archive/2007/07/11/c-3-0-and-codedom.aspx



回答2:


You can do it but its possibly the worst nightmare ever.. Here is how I am doing it currently. (Updated my answer to reflect the question)

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

This can also be populated once again its 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+" }");


来源:https://stackoverflow.com/questions/3048691/codedom-and-collection-initializers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!