/// <summary>
        ///     Creates an instance of <see cref="ApplicationConfigurationModeViewModel" />
        /// </summary>
        /// <param name="interactionService">
        ///     An instance of <see cref="IInteractionService" /> to use
        /// </param>
        /// <param name="configService">
        ///     An instance of <see cref="IConfigurationModeDevicesService" /> to use
        /// </param>
        /// <param name="persistanceService"></param>
        /// <param name="settings">Сервис с настройками приложения</param>
        /// <param name="configDeviceViewModelFactory"></param>
        public ApplicationConfigurationModeViewModel(IInteractionService interactionService,
                                                     IConfigurationModeDevicesService configService,
                                                     IPersistanceService persistanceService,
                                                     IApplicationSettingsService settings, IConfigDeviceViewModelFactory configDeviceViewModelFactory,
                                                     IApplicationLogViewModel applicationLogViewModel)
        {
            Guard.AgainstNullReference(interactionService, "interactionService");
            Guard.AgainstNullReference(configService, "configService");
            Guard.AgainstNullReference(persistanceService, "persistanceService");
            Guard.AgainstNullReference(settings, "settings");

            this._interactionService      = interactionService;
            this._configService           = configService;
            this._persistanceService      = persistanceService;
            this._settings                = settings;
            _configDeviceViewModelFactory = configDeviceViewModelFactory;
            _applicationLogViewModel      = applicationLogViewModel;

            this._logger = LogManager.GetLogger("Конфигурация");
        }
        /// <summary>
        ///     Creates an instance of <see cref="ModifyDeviceInteractionViewModel" />
        /// </summary>
        public ModifyDeviceInteractionViewModel(IInteractionService interactionService,
                                                Func <ICustomFider> customFiderCreator, IFiderViewModelFactory fiderViewModelFactory,
                                                Func <ICustomSignal> customSignalCreator, Func <ICustomIndicator> customIndicatorCreatorCreator,
                                                ISignalViewModelFactory signalViewModelFactory, IIndicatorViewModelFactory indicatorViewModelFactory,
                                                Func <ICascadeIndicator> cascadeIndicatorCreator, ICascadeViewModelFactory cascadeViewModelFactory, IConfigurationModeDriversService driversService, IConfigurationModeDevicesService devicesService)
        {
            _interactionService        = interactionService;
            _customFiderCreator        = customFiderCreator;
            _fiderViewModelFactory     = fiderViewModelFactory;
            _customSignalCreator       = customSignalCreator;
            _customIndicatorCreator    = customIndicatorCreatorCreator;
            _signalViewModelFactory    = signalViewModelFactory;
            _indicatorViewModelFactory = indicatorViewModelFactory;
            _cascadeIndicatorCreator   = cascadeIndicatorCreator;
            _cascadeViewModelFactory   = cascadeViewModelFactory;
            _driversService            = driversService;
            _devicesService            = devicesService;
            this.ResultedDeviceModel   = new DeviceModel();
            DeviceType     = "UNKNOWN";
            TransformKoefA = "100";
            TransformKoefB = "100";
            TransformKoefC = "100";

            _isEditing             = false;
            ViewTitle              = "Создание виртуального устройства";
            OkButtonTitle          = "Создать";
            AnalogMetersCollection = new ObservableCollection <string>(Enum.GetNames(typeof(AnalogMetersEnum)).ToList());
            SelectedAnalogMeter    = AnalogMetersCollection.LastOrDefault();

            AddFiderCommand            = new DelegateCommand(OnAddFiderExecute);
            FiderDefinitionsViewModels = new ObservableCollection <IFiderDefinitionsViewModel>();
            DeleteFiderCommand         = new DelegateCommand <object>(OnDeleteFiderExecute);

            AddSignalCommand            = new DelegateCommand(OnAddSignalExecute);
            SignalDefinitionsViewModels = new ObservableCollection <ISignalDefinitionsViewModel>();
            DeleteSignalCommand         = new DelegateCommand <object>(OnDeleteSignalExecute);

            AddIndicatorCommand            = new DelegateCommand(OnAddIndicatorExecute);
            IndicatorDefinitionsViewModels = new ObservableCollection <IIndicatorDefinitionsViewModel>();
            DeleteIndicatorCommand         = new DelegateCommand <object>(OnDeleteIndicatorExecute);

            AddCascadeCommand            = new DelegateCommand(OnAddCascadeExecute);
            CascadeDefinitionsViewModels = new ObservableCollection <ICascadeDefinitionsViewModel>();
            DeleteCascadeCommand         = new DelegateCommand <object>(OnDeleteCascadeExecute);


            StarterDescriptionsViewModels = new ObservableCollection <StarterDescriptionViewModel>()
            {
                new StarterDescriptionViewModel()
                {
                    IndexAndType = "Описание пускателя1", ChannelNumberOfStarter = 1, IsStartedEnabled = true
                },
                new StarterDescriptionViewModel()
                {
                    IndexAndType = "Описание пускателя2", ChannelNumberOfStarter = 2, IsStartedEnabled = true
                },
                new StarterDescriptionViewModel()
                {
                    IndexAndType = "Описание пускателя3", ChannelNumberOfStarter = 3, IsStartedEnabled = true
                }
            };
        }