在StackExchange上有一些类似于此的问题,但它们没有涵盖完全相同的情况。请先把它读一遍,然后再标记为副本!
使用CodeDom中的C#,我试图为字典生成一个Init表达式。例如
Dictionary<int,string> dict = new Dictionary<int,string>{
{1,"one"},
{2,"two"}
};我已经找到了其他解决方案,它们使用CodeExpression实例化对象,然后使用几个填充实例的CodeStatements,但由于一系列无聊的原因,这是一条我不愿走的路。
为了澄清,因为我不能使用多个CodeStatements,所以我需要避免生成这样的东西:
Dictionary<int,string> dict = new Dictionary<int,string>();
dict.Add(1,"one");
dict.Add(2,"two");,我的问题是:是否有一种只使用CodeDom.CodeExpression来生成这样的代码的方法?
我很肯定,在这一点上,答案是“不”,但认为这将是值得问的只是以防万一。
发布于 2016-01-15 10:51:19
据我所见,您不能在CodeDOM对象模型中表示集合初始化器。但是有一种方法可以解决这个问题:CodeSnippetExpression。使用它,您可以创建一个直接包含任何C#表达式的字符串,并在另一个CodeDOM对象中使用它。
您可能可以使用CodeDOM对象模型和GenerateCodeFromExpression()获取所需代码的部分(但您肯定需要自己组合这些部分)。
发布于 2016-01-12 11:53:17
不,如果您想使用集合初始化器,则需要使用LINQ表达式而不是CodeDOM,例如System.Linq.Expressions.ListInitExpression。
https://stackoverflow.com/questions/34734884
复制相似问题