public bool ApplyNewConfig(ApplicationConfig newConfig, bool force) { CodeContract.Requires(newConfig != null); if (!force && Config.Equals(newConfig)) { return(false); } Logger.LogVerbose("Применение новой конфигурации..."); Config = newConfig; foreach (SubsystemConfig subsystemConfig in Config.Subsystems) { var subsystemName = subsystemConfig.SubsystemName; try { var subsystem = GetSubsystem(subsystemName); subsystem.ApplyNewConfig(subsystemConfig); Logger.LogVerbose("Выполнена переинициализация подсистемы {0}", subsystemName); } catch (Exception ex) { Logger.LogException("Ошибка переинициализации подсистемы {0}: {1}", ex, subsystemName, ex.Message); throw new Exception("Ошибка переинициализации подсистемы " + subsystemName, ex); } } return(true); }