Esempio n. 1
0
        public static ConstructorDeclarationSyntax CreateConstructorDeclaration(this CommandDefinitionModel entity)
        {
            var constructor = SyntaxFactory.ConstructorDeclaration(entity.ClassName)
                              .WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PublicKeyword)));

            return(constructor);
        }
Esempio n. 2
0
        private static ConstructorDeclarationSyntax[] BuildConstructor(CommandDefinitionModel model)
        {
            var parameters  = BuildConstructorTokenList(model.InputMetadata);
            var constructor = model.CreateConstructorDeclaration()
                              .WithParameterList(
                SyntaxFactory.ParameterList(
                    SyntaxFactory.SeparatedList <ParameterSyntax>(parameters)))
                              .WithBody(BuildConstructorAssignmentBlock(model.InputMetadata));

            return(new ConstructorDeclarationSyntax[] { constructor });
        }
Esempio n. 3
0
        private static SyntaxList <MemberDeclarationSyntax> CreateClassMembers(CommandDefinitionModel model)
        {
            var members = BuildMemberProperties(model.InputMetadata.Properties)
                          .OfType <MemberDeclarationSyntax>();

            var constructors = BuildConstructor(model)
                               .OfType <MemberDeclarationSyntax>();

            var memberList = SyntaxFactory.List(members.Union(constructors));

            return(memberList);
        }
        private static SyntaxList <MemberDeclarationSyntax> CreateClassMembers(CommandDefinitionModel model)
        {
            var memberDeclaration = SyntaxFactory.MethodDeclaration(
                SyntaxFactory.IdentifierName(model.ClassName),
                SyntaxFactory.Identifier("ToCommand"))
                                    .WithModifiers(
                SyntaxFactory.TokenList(
                    new[] {
                SyntaxFactory.Token(SyntaxKind.PublicKeyword),
                SyntaxFactory.Token(SyntaxKind.StaticKeyword)
            }))
                                    .WithParameterList(
                SyntaxFactory.ParameterList(
                    SyntaxFactory.SingletonSeparatedList <ParameterSyntax>(
                        SyntaxFactory.Parameter(
                            SyntaxFactory.Identifier("input"))
                        .WithModifiers(
                            SyntaxFactory.TokenList(
                                SyntaxFactory.Token(SyntaxKind.ThisKeyword)))
                        .WithType(
                            SyntaxFactory.IdentifierName(model.InputDtoClassName)))));


            var argumentList = BuildArgumentsTokenList(model.InputMetadata);

            memberDeclaration = memberDeclaration
                                .WithBody(
                SyntaxFactory.Block(
                    SyntaxFactory.LocalDeclarationStatement(
                        SyntaxFactory.VariableDeclaration(
                            SyntaxFactory.IdentifierName("var"))
                        .WithVariables(
                            SyntaxFactory.SingletonSeparatedList <VariableDeclaratorSyntax>(
                                SyntaxFactory.VariableDeclarator(
                                    SyntaxFactory.Identifier("command"))
                                .WithInitializer(
                                    SyntaxFactory.EqualsValueClause(
                                        SyntaxFactory.ObjectCreationExpression(
                                            SyntaxFactory.IdentifierName(model.ClassName))
                                        .WithArgumentList(
                                            SyntaxFactory.ArgumentList(argumentList))))))),
                    SyntaxFactory.ReturnStatement(
                        SyntaxFactory.IdentifierName("command"))));

            var memberDeclarationList = SyntaxFactory.SingletonList <MemberDeclarationSyntax>(memberDeclaration);

            return(memberDeclarationList);
        }
Esempio n. 5
0
        private static CommandDefinitionModel BuildModel(InputDtoClassLocator locator)
        {
            var model = new CommandDefinitionModel();

            // set the class name to create the command with
            var className = locator.InputDtoName.Replace("InputDTO", "Command");

            model.ClassName = className;

            // parse the input class
            var entityParser   = new EntityParser();
            var entityMetadata = entityParser.Parse(locator.InputDtoNode);

            model.InputMetadata = entityMetadata;

            return(model);
        }
Esempio n. 6
0
        private static CompilationUnitSyntax BuildClass(CommandDefinitionModel model)
        {
            // create root node
            var root = CreateRoot();

            // add default usings
            root = root.AddUsings(GetDefaultUsings().ToArray())
                   .NormalizeWhitespace();

            // create the namespace
            var @namespace = CreateNamespace(model.Namespace);

            // create the command class
            var classDeclaration = SyntaxFactory.ClassDeclaration(model.ClassName);

            // add set it accessibility to public
            classDeclaration = classDeclaration
                               .AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword));

            // add on the base class/interface implementations
            classDeclaration = classDeclaration.WithBaseList(BuildBaseList());

            // add on the member properties
            classDeclaration = classDeclaration
                               .NormalizeWhitespace()
                               .WithMembers(CreateClassMembers(model));

            // add the class to the namespace
            @namespace = @namespace
                         .AddMembers(classDeclaration);

            root = root
                   // add members to the root compilation unit
                   .AddMembers(@namespace);

            return(root);
        }