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();
            }
        }