首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型化字典类型的CodeDom InitExpression

类型化字典类型的CodeDom InitExpression
EN

Stack Overflow用户
提问于 2016-01-12 03:01:46
回答 2查看 318关注 0票数 2

在StackExchange上有一些类似于此的问题,但它们没有涵盖完全相同的情况。请先把它读一遍,然后再标记为副本!

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

代码语言:javascript
复制
Dictionary<int,string> dict = new Dictionary<int,string>{
    {1,"one"},
    {2,"two"}
};

我已经找到了其他解决方案,它们使用CodeExpression实例化对象,然后使用几个填充实例的CodeStatements,但由于一系列无聊的原因,这是一条我不愿走的路。

为了澄清,因为我不能使用多个CodeStatements,所以我需要避免生成这样的东西:

代码语言:javascript
复制
Dictionary<int,string> dict = new Dictionary<int,string>();
dict.Add(1,"one");
dict.Add(2,"two");

,我的问题是:是否有一种只使用CodeDom.CodeExpression来生成这样的代码的方法?

我很肯定,在这一点上,答案是“不”,但认为这将是值得问的只是以防万一。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-15 10:51:19

据我所见,您不能在CodeDOM对象模型中表示集合初始化器。但是有一种方法可以解决这个问题:CodeSnippetExpression。使用它,您可以创建一个直接包含任何C#表达式的字符串,并在另一个CodeDOM对象中使用它。

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

票数 1
EN

Stack Overflow用户

发布于 2016-01-12 11:53:17

不,如果您想使用集合初始化器,则需要使用LINQ表达式而不是CodeDOM,例如System.Linq.Expressions.ListInitExpression

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34734884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档