在StackExchange上,有几个与此类似的问题,但它们涵盖的情况并不完全相同。在将其标记为重复项之前,请通读它!
在C#中使用CodeDom,我正在尝试为字典生成一个Init表达式。
例如
Dictionary<int,string> dict = new Dictionary<int,string>{
{1,"one"},
{2,"two"}
};
我发现其他使用CodeExpression实例化对象的解决方案,然后使用几个CodeStatement实例化实例,但是由于一堆无聊的原因,我宁愿不下来。
需要说明的是,由于我不能使用多个CodeStatements,因此我有点需要避免生成以下内容:
Dictionary<int,string> dict = new Dictionary<int,string>();
dict.Add(1,"one");
dict.Add(2,"two");
我的问题是:是否有一种仅使用CodeDom.CodeExpression(s)生成此类代码的方法?
我很确定,在这一点上答案是“不。”,但我认为值得以防万一。
最佳答案
据我所知,您无法在CodeDOM对象模型中表达集合初始化器。但是有一种解决方法:CodeSnippetExpression
。使用它,您可以创建一个直接包含所需C#表达式的字符串,并在另一个CodeDOM对象中使用它。
您可能可以使用CodeDOM对象模型和GenerateCodeFromExpression()
来获取所需的代码部分(但您肯定需要自己组合这些部分)。