首页 > 解决方案 > 如何在 Roslyn 中将给定的语句字符串解析为 StatementSyntax?

问题描述

我有一个 StatementSyntax 类型列表,称为“语句”,我想在其中插入一个语句,如“var obj = new object();”

我试过: ExpressionSyntax es = SyntaxFactory.ParseExpression("var obj = new object();")

但我不能将它插入到抛出异常“无法将 ExpressionSyntax(或 SyntaxNode)”转换为 StatementSyntax 的列表中。

ExpressionSyntax  es = SyntaxFactory.ParseExpression(                                        
     declaredStat.Declaration.Type.ToFullString() + " " +
     declaredStat.Declaration.Variables.FirstOrDefault().Identifier.ValueText +
     " = String.Empty;"
);

statements.Insert(0, es);

它在上面的行中引发异常。

我希望以字符串形式给出的语句进入列表的某个索引,所以最终目标是:

BlockSyntax block= SyntaxFactory.Block(statements.ToArray());

但我无法使用从给定字符串插入语句的语句列表来构建语句。

标签: c#roslyn

解决方案


您不能在 StatementSyntax 列表中插入 ExpressionSyntax 对象。为什么不创建一个 ExpressionSyntax 列表并在该列表中插入新的 ExpressionSyntax 对象?


推荐阅读