in src/WebJobs.Extensions.DurableTask.Analyzers/CodeFixProviderUtils.cs [26:57]
public static bool TryGetDurableOrchestrationContextVariableName(SyntaxNode node, out string variableName)
{
if (SyntaxNodeUtils.TryGetMethodDeclaration(node, out MethodDeclarationSyntax methodDeclaration))
{
var parameterList = methodDeclaration.ParameterList;
foreach (SyntaxNode parameter in parameterList.ChildNodes())
{
var attributeLists = parameter.ChildNodes().Where(x => x.IsKind(SyntaxKind.AttributeList));
foreach (SyntaxNode attributeList in attributeLists)
{
if (attributeList.ChildNodes().First().ToString().Equals("OrchestrationTrigger"))
{
var identifierName = parameter.ChildNodes().Where(x => x.IsKind(SyntaxKind.IdentifierName)).FirstOrDefault()?.ToString();
if (string.Equals(identifierName, "IDurableOrchestrationContext") || string.Equals(identifierName, "DurableOrchestrationContext") || string.Equals(identifierName, "DurableOrchestrationContextBase"))
{
//A parameter will always have an IdentifierToken
var identifierToken = parameter.ChildTokens().Where(x => x.IsKind(SyntaxKind.IdentifierToken)).First().ToString();
if (!string.Equals(identifierToken, ""))
{
variableName = identifierToken;
return true;
}
}
}
}
}
}
variableName = null;
return false;
}