C# 类型化字典类型的CodeDom InitExpression

C# 类型化字典类型的CodeDom InitExpression,c#,dictionary,codedom,C#,Dictionary,Codedom,在StackExchange上有两个类似的问题,但它们并不涵盖完全相同的情况。请仔细阅读后再标记为副本 使用C#中的CodeDom,我试图为字典生成一个Init表达式。 乙二醇 Dictionary dict=新字典{ {1,“一”}, {2,“两个”} }; 我已经找到了其他解决方案,它们使用一个CodeExpression来实例化对象,然后使用几个CodeStatement来填充实例,但是由于一些无聊的原因,我不想走这条路 为了澄清,因为我不能使用多个代码语句,所以我需要避免生成如下内容:

在StackExchange上有两个类似的问题,但它们并不涵盖完全相同的情况。请仔细阅读后再标记为副本

使用C#中的CodeDom,我试图为字典生成一个Init表达式。 乙二醇

Dictionary dict=新字典{
{1,“一”},
{2,“两个”}
};
我已经找到了其他解决方案,它们使用一个CodeExpression来实例化对象,然后使用几个CodeStatement来填充实例,但是由于一些无聊的原因,我不想走这条路

为了澄清,因为我不能使用多个代码语句,所以我需要避免生成如下内容:

Dictionary<int,string> dict = new Dictionary<int,string>();
dict.Add(1,"one");
dict.Add(2,"two");
Dictionary dict=new Dictionary();
增加(1,“一”);
添加第(2,“两条”);
我的问题是:有没有办法只使用CodeDom.CodeExpression生成这样的代码


我很确定,在这一点上答案是“否”,但我认为值得一问,以防万一。

否,如果您想使用集合初始值设定项,您需要使用LINQ表达式而不是CodeDOM,例如,据我所知,
System.LINQ.Expressions.ListInitExpression
,不能在CodeDOM对象模型中表示集合初始值设定项。但有一种方法可以解决这个问题:。使用它,您可以创建一个直接包含所需任何C#表达式的字符串,并在另一个CodeDOM对象中使用它


您可能能够使用CodeDOM对象模型并获得所需的部分代码(但您肯定需要自己组合这些部分)。

那么您有100000项需要插入到字典中?写那个代码太无聊了?这是你的问题吗?这些物品来自哪里?来自数据库或其他什么?是
CodeSnippetExpression
(即,自己将表达式构建为字符串)可接受?@KosalaW我更多的是想反映一个数据集,它支持结构中的列表中的词典,结构中的列表中的词典等。构建一个表达式树来初始化这些事情很好,但一旦添加了语句,我就不得不开始担心上下文了(例如,它们必须位于方法中,不能用于初始化数组)@斯维克我看了一下CodeSnippetExpression,虽然这是一个很好的建议,但它意味着字典中的所有内容都需要字符串化。这不是世界末日,但我宁愿避免它。因此CodeSnippetExpression最终对我来说工作得很好。@斯维克,如果你想把你的评论移到一个答案上,我很乐意勾选它。Tha这对我来说没有多大意义,LINQ表达式的用例往往与CodeDOM非常不同,不能用一个替换另一个。
Dictionary<int,string> dict = new Dictionary<int,string>();
dict.Add(1,"one");
dict.Add(2,"two");