public static bool TryGetFunctionKind(MethodDeclarationSyntax method, out DurableFunctionKind kind) { var parameters = method.ParameterList.Parameters; foreach (var parameterSyntax in parameters) { var parameterAttributes = parameterSyntax.AttributeLists.SelectMany(a => a.Attributes); foreach (var attribute in parameterAttributes) { if (attribute.ToString().Equals("OrchestrationTrigger")) { kind = DurableFunctionKind.Orchestration; return(true); } if (attribute.ToString().Equals("ActivityTrigger")) { kind = DurableFunctionKind.Activity; return(true); } } } kind = DurableFunctionKind.Unknonwn; return(false); }
public DurableFunction(string fullTypeName, string name, DurableFunctionKind kind, List <TypedParameter> parameters, TypeSyntax returnTypeSyntax, HashSet <string> requiredNamespaces) { FullTypeName = fullTypeName; RequiredNamespaces = requiredNamespaces; Name = name; Kind = kind; Parameters = parameters; if (returnTypeSyntax is GenericNameSyntax genericReturnTypeSyntax) { var identifier = genericReturnTypeSyntax.Identifier; var typeArgumentList = genericReturnTypeSyntax.TypeArgumentList; ReturnType = genericReturnTypeSyntax.ToString(); CallGenerics = $"<{typeArgumentList.Arguments.First()}>"; } else if (returnTypeSyntax is IdentifierNameSyntax identifierNameSyntax) { var identifier = identifierNameSyntax; var isVoidReturn = ReturnType == "Task"; ReturnType = isVoidReturn ? "Task" : $"Task<{identifier}>"; CallGenerics = isVoidReturn ? string.Empty : $"<{identifier.ToFullString()}>"; } else if (returnTypeSyntax is PredefinedTypeSyntax predefinedTypeSyntax) { ReturnType = $"Task<{predefinedTypeSyntax}>"; CallGenerics = $"<{predefinedTypeSyntax.ToFullString()}>"; } }