private static bool TryGetDurableActivityContextExpression(SemanticModel semanticModel, SyntaxNode node, out SyntaxNode durableContextExpression) { if (SyntaxNodeUtils.TryGetMethodDeclaration(node, out SyntaxNode methodDeclaration)) { var memberAccessExpressionList = methodDeclaration.DescendantNodes().Where(x => x.IsKind(SyntaxKind.SimpleMemberAccessExpression)); foreach (var memberAccessExpression in memberAccessExpressionList) { var identifierName = memberAccessExpression.ChildNodes().FirstOrDefault(x => x.IsKind(SyntaxKind.IdentifierName)); if (identifierName != null) { if (SyntaxNodeUtils.TryGetITypeSymbol(semanticModel, identifierName, out ITypeSymbol typeSymbol)) { if (SyntaxNodeUtils.IsDurableActivityContext(typeSymbol)) { durableContextExpression = memberAccessExpression; return(true); } } } } } durableContextExpression = null; return(false); }
private static bool TryGetDefinitionInputType(SemanticModel semanticModel, SyntaxNode parameterNode, out ITypeSymbol definitionInputType) { if (SyntaxNodeUtils.TryGetITypeSymbol(semanticModel, parameterNode, out definitionInputType)) { if (SyntaxNodeUtils.IsDurableActivityContext(definitionInputType)) { return(TryGetInputTypeFromContext(semanticModel, parameterNode, out definitionInputType)); } return(true); } definitionInputType = null; return(false); }
private static bool TryGetDefinitionInputType(SemanticModel semanticModel, ActivityFunctionDefinition functionDefinition, out ITypeSymbol definitionInputType) { var definitionInput = functionDefinition.ParameterNode; if (definitionInput == null) { definitionInputType = null; return(false); } if (SyntaxNodeUtils.TryGetITypeSymbol(semanticModel, definitionInput, out definitionInputType)) { if (SyntaxNodeUtils.IsDurableActivityContext(definitionInputType)) { return(TryGetInputTypeFromContext(semanticModel, definitionInput, out definitionInputType)); } return(true); } definitionInputType = null; return(false); }