Пример #1
0
        private ProxyModel GetModel(ClassDeclarationSyntax classSyntax, Compilation compilation)
        {
            var root = classSyntax.GetCompilationUnit();
            var classSemanticModel = compilation.GetSemanticModel(classSyntax.SyntaxTree);
            var classSymbol        = classSemanticModel.GetDeclaredSymbol(classSyntax);

            var proxyModel = new ProxyModel
            {
                ClassBase = classSyntax.GetClassName(),

                ClassName = $"{classSyntax.GetClassName()}{ProxyAttribute.Name}",

                ClassModifier = classSyntax.GetClassModifier(),

                Usings = root.GetUsings(),

                Namespace = root.GetNamespace(),

                Commands = GetMethodWithParameter(classSyntax, classSemanticModel, nameof(Command)),

                Queries = GetMethodWithParameter(classSyntax, classSemanticModel, nameof(Query)),

                Events = GetMethodWithParameter(classSyntax, classSemanticModel, nameof(Event)),

                ConstructorParameters = GetConstructor(classSymbol),

                InjectedProperties = GetInjectedProperties(classSymbol),

                Subscriptions = GetSubscriptions(classSyntax, classSemanticModel)
            };

            return(proxyModel);
        }
Пример #2
0
        private async Task <Solution> ReverseTypeNameAsync(Document document, MethodDeclarationSyntax methDecl, ClassDeclarationSyntax classDecl, CancellationToken cancellationToken)
        {
            var solution = document.Project.Solution;

            /* Trouver le projet de test. */
            var testProjetName = document.Project.Name + ".Test";
            var testProject    = solution.Projects.FirstOrDefault(x => x.Name == testProjetName);

            if (testProject == null)
            {
                return(solution);
            }

            /* Dossier du document. */
            var classTestDir = classDecl.GetClassName() + "Test";

            /* Nom du document. */
            var methTestFile = methDecl.GetMethodName() + "Test";

            /* Contenu du document. */
            const string content = "namespace TestUnitaire {}"; // TODO

            /* Création du document. */
            var newDoc = testProject.AddDocument(methTestFile, content, new List <string> {
                classTestDir
            });

            /* Retourne la solution modifiée. */
            return(newDoc.Project.Solution);
        }
        public static AlpakaEventModel From(ClassDeclarationSyntax classSyntax, Compilation compilation)
        {
            var root = classSyntax.GetCompilationUnit();
            var classSemanticModel = compilation.GetSemanticModel(classSyntax.SyntaxTree);
            var classSymbol        = classSemanticModel.GetDeclaredSymbol(classSyntax);

            return(new AlpakaEventModel()
            {
                EventName = $"{classSyntax.GetClassName()}",

                Usings = root.GetUsings(),

                Namespace = root.GetNamespace(),
            });
        }
Пример #4
0
        private Solution AddUnitTestAsync(Document document, MethodDeclarationSyntax methDecl, IMethodSymbol methSymbol, ClassDeclarationSyntax classDecl, DalTestStrategy strategy, CancellationToken cancellationToken)
        {
            var solution = document.Project.Solution;

            /* Trouver le projet de test. */
            var testProjetName = document.Project.Name + ".Test";
            var testProject    = solution.Projects.FirstOrDefault(x => x.Name == testProjetName);

            if (testProject == null)
            {
                return(solution);
            }

            /* Dossier du document. */
            var classTestDir = classDecl.GetClassName() + "Test";

            /* Nom du document. */
            var methTestFile = methSymbol.Name + "Test";

            /* Contenu du document. */
            var             classSymbol     = methSymbol.ContainingType;
            var             applicationName = classSymbol.ContainingAssembly.GetApplicationName();
            DalTestTemplate template        = new DalTestTemplate(new DalMethodItem {
                DalClassName    = classSymbol.Name,
                DalMethodName   = methSymbol.Name,
                DalAssemblyName = classSymbol.ContainingAssembly.Name,
                DalNamespace    = classDecl.GetNameSpaceFullName(),
                Params          = methSymbol.Parameters.Select(x => GetParameter(x)).ToList(),
                SpecificUsings  = new List <string> {
                    $"{applicationName}.TestUtils.Templates", "Kinetix.TestUtils.Helpers"
                }
            });
            string content = template.Render(strategy);

            /* Création du document. */
            var newDoc = testProject.AddDocument(methTestFile, content, new List <string> {
                classTestDir
            });

            /* Retourne la solution modifiée. */
            return(newDoc.Project.Solution);
        }