public ProjectManager(IProjectValidator projectValidator, IProjectUpgrader projectUpgrader, IProjectRefresherSelector projectRefresherSelector,
                              IProjectSerializerSelector projectSerializerSelector, IProjectInitializer projectInitializer, IProjectManagementConfigurationService projectManagementConfigurationService,
                              IProjectManagementInitializationService projectManagementInitializationService, IProjectStateService projectStateService)
        {
            Argument.IsNotNull(() => projectValidator);
            Argument.IsNotNull(() => projectUpgrader);
            Argument.IsNotNull(() => projectRefresherSelector);
            Argument.IsNotNull(() => projectSerializerSelector);
            Argument.IsNotNull(() => projectInitializer);
            Argument.IsNotNull(() => projectManagementConfigurationService);
            Argument.IsNotNull(() => projectManagementInitializationService);
            Argument.IsNotNull(() => projectStateService);

            _projectValidator          = projectValidator;
            _projectUpgrader           = projectUpgrader;
            _projectRefresherSelector  = projectRefresherSelector;
            _projectSerializerSelector = projectSerializerSelector;
            _projectInitializer        = projectInitializer;
            _projectManagementInitializationService = projectManagementInitializationService;
            _projectStateSetter = (IProjectStateSetter)projectStateService;

            _projects          = new ListDictionary <string, IProject>();
            _projectRefreshers = new ConcurrentDictionary <string, IProjectRefresher>();

            ProjectManagementType = projectManagementConfigurationService.GetProjectManagementType();
        }
 public CommandLineInterfaceRunner(
     ILogger logger,
     IProjectInitializer projectInitializer,
     IDomainModelReader domainModelReader,
     IEnumerable <ICodeGenerator> codeGenerators)
 {
     this.logger             = logger;
     this.projectInitializer = projectInitializer;
     this.domainModelReader  = domainModelReader;
     this.codeGenerators     = codeGenerators;
 }