如何使用 roslyn 创建数字文字标记?
How create Numeric literal token with roslyn?
我想像下面这样更改 InitializerExpressionSyntax 节点,但发生错误:使用 Roslyn.Compilers.CSharp.Syntax.Literal 创建数字文字标记。参数名称:种类
public override syntaxnode VisitInitializerExpression (InitializerExpressionSyntax node )
{
SeparatedSyntaxList<ExpressionSyntax> list =new SeparatedSyntaxList<ExpressionSyntax> ();
foreach (var item in RandomByteArray)
{
SyntaxToken t=SyntaxFactory.Token (default (SyntaxTriviaList),SyntaxKind.NumericLiteralToken, item.ToString (),item. ToString (),(default (SyntaxTriviaList));//error is here
list.Add (SyntaxFactory.LiteralExpression (SyntaxKind.NumericLiteralExpression,t));
}
node=node. WithExpressions(list);
return node;
}
尝试创建令牌时,在 SyntaxFactory.Token 内; SyntaxFactory.Token 函数不支持 NumbericLiteralToken 的 SyntaxKind。
相反,您需要按照 API 的要求使用 SyntaxFactory.Literal。
SyntaxFactory.Literal(default(SyntaxTriviaList), item.ToString(), item.ToString(), item.ToString(), default(SyntaxTriviaList));
来源;罗莎琳参考来源
(SyntaxFactory.Token: http://sourceroslyn.io/#Microsoft.CodeAnalysis.CSharp/Syntax/SyntaxFactory.cs,241)
(SyntaxFactory.Literal: http://sourceroslyn.io/#Microsoft.CodeAnalysis.CSharp/Syntax/SyntaxFactory.cs,585)
我想像下面这样更改 InitializerExpressionSyntax 节点,但发生错误:使用 Roslyn.Compilers.CSharp.Syntax.Literal 创建数字文字标记。参数名称:种类
public override syntaxnode VisitInitializerExpression (InitializerExpressionSyntax node )
{
SeparatedSyntaxList<ExpressionSyntax> list =new SeparatedSyntaxList<ExpressionSyntax> ();
foreach (var item in RandomByteArray)
{
SyntaxToken t=SyntaxFactory.Token (default (SyntaxTriviaList),SyntaxKind.NumericLiteralToken, item.ToString (),item. ToString (),(default (SyntaxTriviaList));//error is here
list.Add (SyntaxFactory.LiteralExpression (SyntaxKind.NumericLiteralExpression,t));
}
node=node. WithExpressions(list);
return node;
}
尝试创建令牌时,在 SyntaxFactory.Token 内; SyntaxFactory.Token 函数不支持 NumbericLiteralToken 的 SyntaxKind。
相反,您需要按照 API 的要求使用 SyntaxFactory.Literal。
SyntaxFactory.Literal(default(SyntaxTriviaList), item.ToString(), item.ToString(), item.ToString(), default(SyntaxTriviaList));
来源;罗莎琳参考来源
(SyntaxFactory.Token: http://sourceroslyn.io/#Microsoft.CodeAnalysis.CSharp/Syntax/SyntaxFactory.cs,241)
(SyntaxFactory.Literal: http://sourceroslyn.io/#Microsoft.CodeAnalysis.CSharp/Syntax/SyntaxFactory.cs,585)