c# - 无法将参数添加到 Roslyn 中的 SyntaxFactory.ArgumentList()

标签 c# roslyn

出于某种原因,我无法向 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

最佳答案

ArgumentListSyntax 是不可变的。

相反,您应该使用它的成员函数来创建带有附加参数的更新实例:

argList = argList.AddArguments(SyntaxFactory.Argument(tempMemAccess));

关于c# - 无法将参数添加到 Roslyn 中的 SyntaxFactory.ArgumentList(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48192989/

相关文章:

c# - 如何从 roslyn 代码分析器输出文件?

c# - Visual Studio : c# interactive shell window

c# - 将 TypeOf "List<int>"与 "System.Collections.Generic.List<int>"进行比较

.net - 键入时更新 Roslyn 文档的正确方法是什么?

c# - 使用 [Authorize] 集成测试 Web Api

c# - 从 MVC 运行短暂的后台任务

c# - 如何覆盖 WPF 上的 onclose 事件?

c# - windows service,Thread 和 Timer 哪个更好用?

c# - Unity 使用带有输入字段的脚本

.NET编译平台: Not Working