2016-03-26 30 views
0

我想要像下面那樣更改InitializerExpressionSyntax節點,但發生錯誤:使用Roslyn.Compilers.CSharp.Syntax.Literal創建數字橫向標記。參數名稱:kind如何用roslyn創建數字橫向標記?

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; 
} 
+0

什麼出錯? –

+0

錯誤消息:使用Roslyn.Compilers.CSharp.Syntax.Literal創建數字橫向標記。參數名稱:kind – mohsen

+0

另外,如果你使用的是Roslyn。*命名空間的東西,那意味着你正在使用_very_舊的預覽位。確保您使用的是當前名稱爲Microsoft.CodeAnalysis的NuGet包。 –

回答

2

當試圖在SyntaxFactory.Token中創建令牌時,即SyntaxFactory.Token函數不支持NumbericLiteralToken的SyntaxKind。

相反,您需要使用API​​所要求的SyntaxFactory.Literal。

SyntaxFactory.Literal(default(SyntaxTriviaList), item.ToString(), item.ToString(), item.ToString(), default(SyntaxTriviaList)); 

來源;羅莎琳參考源

(SyntaxFactory.Token:http://source.roslyn.io/#Microsoft.CodeAnalysis.CSharp/Syntax/SyntaxFactory.cs,241

(SyntaxFactory.Literal:http://source.roslyn.io/#Microsoft.CodeAnalysis.CSharp/Syntax/SyntaxFactory.cs,585

相關問題