public static bool TryGetDurableOrchestrationContextVariableName()

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;
        }