类型化字典类型的 CodeDom InitExpression
CodeDom InitExpression for Typed Dictionary type
在 StackExchange 上有几个与此类似的问题,但它们并未涵盖完全相同的情况。请在将其标记为重复之前通读!
在 C# 中使用 CodeDom,我正在尝试为字典生成一个 Init 表达式。
例如
Dictionary<int,string> dict = new Dictionary<int,string>{
{1,"one"},
{2,"two"}
};
我找到了其他解决方案,这些解决方案使用 CodeExpression 来实例化对象,然后使用几个 CodeStatements 来填充实例,但是由于一堆无聊的原因,我不想走这条路。
为了澄清,因为我不能使用多个代码语句,所以我有点需要避免生成这样的东西:
Dictionary<int,string> dict = new Dictionary<int,string>();
dict.Add(1,"one");
dict.Add(2,"two");
我的问题是: 有没有办法只使用 CodeDom.CodeExpression(s) 来生成这样的代码?
我很确定此时答案是 "no.",但我认为为了以防万一还是值得一问。
不,如果您想使用集合初始值设定项,则需要使用 LINQ 表达式而不是 CodeDOM,例如System.Linq.Expressions.ListInitExpression
.
据我所知,您无法在 CodeDOM 对象模型中表达集合初始值设定项。但是有一种方法可以解决这个问题:CodeSnippetExpression
。使用它,您可以创建一个直接包含您想要的任何 C# 表达式的字符串,并在另一个 CodeDOM 对象中使用它。
您也许可以使用 CodeDOM 对象模型和 GenerateCodeFromExpression()
来获取您需要的部分代码(但您肯定需要自己组合这些部分)。
在 StackExchange 上有几个与此类似的问题,但它们并未涵盖完全相同的情况。请在将其标记为重复之前通读!
在 C# 中使用 CodeDom,我正在尝试为字典生成一个 Init 表达式。 例如
Dictionary<int,string> dict = new Dictionary<int,string>{
{1,"one"},
{2,"two"}
};
我找到了其他解决方案,这些解决方案使用 CodeExpression 来实例化对象,然后使用几个 CodeStatements 来填充实例,但是由于一堆无聊的原因,我不想走这条路。
为了澄清,因为我不能使用多个代码语句,所以我有点需要避免生成这样的东西:
Dictionary<int,string> dict = new Dictionary<int,string>();
dict.Add(1,"one");
dict.Add(2,"two");
我的问题是: 有没有办法只使用 CodeDom.CodeExpression(s) 来生成这样的代码?
我很确定此时答案是 "no.",但我认为为了以防万一还是值得一问。
不,如果您想使用集合初始值设定项,则需要使用 LINQ 表达式而不是 CodeDOM,例如System.Linq.Expressions.ListInitExpression
.
据我所知,您无法在 CodeDOM 对象模型中表达集合初始值设定项。但是有一种方法可以解决这个问题:CodeSnippetExpression
。使用它,您可以创建一个直接包含您想要的任何 C# 表达式的字符串,并在另一个 CodeDOM 对象中使用它。
您也许可以使用 CodeDOM 对象模型和 GenerateCodeFromExpression()
来获取您需要的部分代码(但您肯定需要自己组合这些部分)。