public RepositoryService(RepositoryGeneratorWorkSpace workSpace, RepositoryProject config) { _config = config; var repositoryModelsProjects = _config.RepositoryClassProjects.Split(',').Select(p => p.Trim()).ToList(); var repositoryInterfaceProjects = _config.RepositoryInterfacesProjectName.Split(',').Select(p => p.Trim()).ToList(); var additionalProjectsForAnalysis = _config.AdditionalProjects.Split(',').Select(p => p.Trim()).ToList(); additionalProjectsForAnalysis.Add(_config.TargetProjectName); _solutionSyntaxWalker = new SolutionSyntaxWalker(workSpace.GeneratorWorkspace.Solution, repositoryModelsProjects, _config.RepositoryAttributeName, repositoryInterfaceProjects, _config.TargetProjectName, additionalProjectsForAnalysis); }
/// <summary> /// Scan configured project for search repository model and generate code of repository class /// </summary> public async Task GenerateRepository() { var repositoryGeneratorWorkSpace = new RepositoryGeneratorWorkSpace(); // open target solution repositoryGeneratorWorkSpace.OpenSolution(_generatorWorkspace); // Generate repositories for configured project foreach (var config in _configurations) { // open target project repositoryGeneratorWorkSpace.OpenProject(config.TargetProjectName); var repositoryService = new RepositoryService(repositoryGeneratorWorkSpace, config); // Create list of repository for generate IEnumerable<ICodeClassGeneratorRepository> candidatesRepository; try { candidatesRepository = repositoryService.GetRepositories(); } catch (Exception e) { Console.WriteLine(e); return; } foreach (var repository in candidatesRepository) { // Get code of repository class var code = repository.GetFullCode(); // Add document to creation repositoryGeneratorWorkSpace.AddFileToCreation(repository.FileName, config.RepositoryTargetFolder, code); } // Save all files await repositoryGeneratorWorkSpace.ApplyChanges(); } }