private static List <MemberDeclarationSyntax> CreateConstructor( string className, string parameterName) { return(new MemberDeclarationSyntax[] { SyntaxFactory.GlobalStatement( SyntaxFactory.LocalFunctionStatement( SyntaxFactory.IdentifierName(className), SyntaxFactory.MissingToken(SyntaxKind.IdentifierToken)) .WithModifiers(SyntaxFactory.TokenList(SyntaxTokenFactory.PrivateKeyword())) .WithParameterList(SyntaxParameterListFactory.CreateWithOneItem(nameof(ActionResult), parameterName)) .WithSemicolonToken( SyntaxFactory.MissingToken( SyntaxFactory.TriviaList(), SyntaxKind.SemicolonToken, SyntaxFactory.TriviaList( SyntaxFactory.Trivia( SyntaxFactory.SkippedTokensTrivia() .WithTokens( SyntaxFactory.TokenList( SyntaxTokenFactory.Colon()))))))), SyntaxFactory.GlobalStatement( SyntaxFactory.ExpressionStatement( SyntaxFactory.InvocationExpression( SyntaxFactory.BaseExpression()) .WithArgumentList( SyntaxFactory.ArgumentList( SyntaxFactory.SingletonSeparatedList( SyntaxFactory.Argument(SyntaxFactory.IdentifierName(parameterName)))))) .WithSemicolonToken(SyntaxFactory.MissingToken(SyntaxKind.SemicolonToken))), SyntaxFactory.GlobalStatement(SyntaxFactory.Block()), }.ToList()); }
private static MethodDeclarationSyntax CreateMembersForEndpointsPrivateHelper( KeyValuePair <OperationType, OpenApiOperation> apiOperation, bool hasRouteParameters) { var operationName = apiOperation.Value.GetOperationName(); var interfaceName = "I" + operationName + NameConstants.ContractHandler; var methodName = $"Invoke{operationName}Async"; var parameterTypeName = operationName + NameConstants.ContractParameters; var hasParametersOrRequestBody = apiOperation.Value.HasParametersOrRequestBody() || hasRouteParameters; // Create method # use CreateParameterList & CreateCodeBlockReturnStatement var methodDeclaration = SyntaxFactory.MethodDeclaration( SyntaxFactory.GenericName(SyntaxFactory.Identifier(nameof(Task))) .WithTypeArgumentList(SyntaxTypeArgumentListFactory.CreateWithOneItem(nameof(ActionResult))), SyntaxFactory.Identifier(methodName)) .AddModifiers(SyntaxTokenFactory.PrivateKeyword()) .AddModifiers(SyntaxTokenFactory.StaticKeyword()) .AddModifiers(SyntaxTokenFactory.AsyncKeyword()) .WithParameterList(CreateParameterList(hasParametersOrRequestBody, parameterTypeName, interfaceName, false)) .WithBody( SyntaxFactory.Block( CreateCodeBlockReturnStatementForHelper(hasParametersOrRequestBody))); return(methodDeclaration); }