/// <summary> /// 保存一个外壳设置。 /// </summary> /// <param name="settings">外壳设置信息。</param> void IShellSettingsManager.SaveSettings(ShellSettings settings) { settings.NotNull("settings"); if (string.IsNullOrWhiteSpace(settings.Name)) { throw new ArgumentException("外壳设置信息中的 Name 属性不能为空。", "settings"); } Logger.Debug("保存租户 '{0}' 的外壳设置信息...", settings.Name); var filePath = Path.Combine(SettingsDirectoryName, settings.Name, SettingsFileName); Task.Factory.StartNew( () => _appDataFolder.CreateFile(filePath, ShellSettingsSerializer.ComposeSettings(settings))); Logger.Debug("外壳设置信息保存成功,标记租户 '{0}' 需要重新启动。", settings.Name); //使缓存失效。 _simpleToken.IsCurrent = false; if (_events == null) { return; } foreach (var @event in _events.Value) { @event.Saved(settings); } }
private IEnumerable <ShellSettings> LoadSettingsInternal() { var filePaths = _appDataFolder .ListDirectories(SettingsDirectoryName) .SelectMany(path => _appDataFolder.ListFiles(path)) .Where(path => string.Equals(Path.GetFileName(path), SettingsFileName, StringComparison.OrdinalIgnoreCase)); return(filePaths.Select(filePath => ShellSettingsSerializer.ParseSettings(_appDataFolder.ReadFile(filePath)))); }