由于某种原因,我无法向ArgumentList语法节点添加任何内容。我试过以下例子。在所有这些情况下,都会创建一个有效的Argument节点,但是在Add()操作之后,argList.Arguments的计数仍为零。
var argList = SyntaxFactory.ArgumentList();
var tempMemAccess = SyntaxFactory.MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
SyntaxFactory.IdentifierName(ids.First()),
SyntaxFactory.IdentifierName(SomeName));
argList.Arguments.Add(SyntaxFactory.Argument(tempMemAccess));
// argList remains empty
argList.Arguments.Add(
SyntaxFactory.Argument(SyntaxFactory.IdentifierName(possibleColName)));
// argList remains empty
argList.Arguments.Add((ArgumentSyntax)base.VisitArgument(a));
// argList remains empty
答案 0 :(得分:1)
ArgumentListSyntax
是不可变的。
相反,您应该使用其成员函数来使用其他参数创建更新的实例:
argList = argList.AddArguments(SyntaxFactory.Argument(tempMemAccess));
答案 1 :(得分:0)
显然所有这些对象都是不可变的,所以每次我都必须将它们分配给一个新变量。 这就是我用过的东西:
var newArgs = new List<ArgumentSyntax>();
newArgs.Add((ArgumentSyntax)base.VisitArgument(a));
var argListSyntax = SyntaxFactory.ArgumentList(SyntaxFactory.SeparatedList<ArgumentSyntax>(newArgs));
var newInvocation = SyntaxFactory.InvocationExpression(SyntaxFactory.IdentifierName("func"), argListSyntax);