public void FindActivities(SyntaxNodeAnalysisContext context) { var attributeExpression = context.Node as AttributeSyntax; if (attributeExpression != null && attributeExpression.ChildNodes().First().ToString() == "ActivityTrigger") { if (SyntaxNodeUtils.TryGetFunctionAttribute(attributeExpression, out SyntaxNode functionAttribute)) { if (SyntaxNodeUtils.TryGetFunctionName(functionAttribute, out SyntaxNode attributeArgument)) { var functionName = attributeArgument.ToString().Trim('"'); if (SyntaxNodeUtils.TryGetParameterNodeNextToAttribute(attributeExpression, context, out SyntaxNode inputTypeNode)) { ITypeSymbol inputType = context.SemanticModel.GetTypeInfo(inputTypeNode).Type; if (inputType.ToString().Equals("Microsoft.Azure.WebJobs.IDurableActivityContext") || inputType.ToString().Equals("Microsoft.Azure.WebJobs.DurableActivityContext")) { if (!TryGetInputTypeFromDurableContextCall(out inputType, context, attributeExpression)) { return; } } if (SyntaxNodeUtils.TryGetReturnType(attributeExpression, context, out ITypeSymbol returnType)) { availableFunctions.Add(new ActivityFunctionDefinition { FunctionName = functionName, InputType = GetQualifiedTypeName(inputType), ReturnType = GetQualifiedTypeName(returnType) }); } } } } } }