我正在编写一个Roslyn 代码分析器,我想确定一个async
方法是否不采用 a CancellationToken
,然后建议一个添加它的代码修复:
//Before Code Fix:
public async Task Example(){}
//After Code Fix
public async Task Example(CancellationToken token){}
我已DiagnosticAnalyzer
通过检查 连接正确报告诊断methodDeclaration.ParameterList.Parameters
,但我找不到用于将 a 添加Paramater
到ParameterList
内部的 Roslyn API CodeFixProvider
。
这是我到目前为止所得到的:
private async Task<Document> HaveMethodTakeACancellationTokenParameter(
Document document, SyntaxNode syntaxNode, CancellationToken cancellationToken)
{
var method = syntaxNode as MethodDeclarationSyntax;
// what goes here?
// what I want to do is:
// method.ParameterList.Parameters.Add(
new ParameterSyntax(typeof(CancellationToken));
//somehow return the Document from method
}
如何正确更新方法声明并返回更新的Document
?