[英]IdentifierToken not being hit in Roslyn Analyzer
我正在嘗試編寫一個 Roslyn 分析器,它需要攔截對函數調用WaitForExternalEvent
調用並對該函數的參數執行一些邏輯。 我有一個語法樹,看起來像
在代碼形式它看起來像
public static class HireEmployee
{
[FunctionName("HireEmployee")]
public static async Task<Application> RunOrchestrator(
[OrchestrationTrigger] DurableOrchestrationContext context,
ILogger log)
{
var applications = context.GetInput<List<Application>>();
var approvals = await context.WaitForExternalEvent<List<Application>>("ApplicationsFiltered");
log.LogInformation($"Approval received. {approvals.Count} applicants approved");
return approvals.OrderByDescending(x => x.Score).First();
}
...
當我為此注冊操作時,我會這樣做
context.RegisterSyntaxNodeAction(AnalyzeSyntax, SyntaxKind.IdentifierName);
在我的AnalyzeSyntax
方法中設置斷點,我確實為 IdentifierName 標記命中了斷點,但從未為WaitForExternalEvent
標記命中了斷點。 令牌的深度有限制嗎? 我應該如何找到這些電話?
在我看來,您需要使用SyntaxKind.GenericName
而不是SyntaxKind.IdentifierName
來注冊操作。 然后在您的AnalyzeSyntax
方法中,您希望將context.Node
為GenericName
類型。
當我突出顯示WaitForExternalEvent<List<Application>>
時,這就是語法可視化工具向我顯示的內容。
所以,設置這樣的動作:
context.RegisterSyntaxNodeAction(AnalyzeSyntaxNode, SyntaxKind.GenericName);
你的方法的開始應該這樣做:
private void AnalyzeSyntaxNode(SyntaxNodeAnalysisContext context)
{
var syntax = context.Node as GenericNameSyntax;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.