#region Copyright (C) 2016 Kevin (OSS开源系列) 公众号:OSSCore /*************************************************************************** *   文件功能描述:全局插件 - 配置插件默认实现 * *   创建人: Kevin * 创建人Email:1985088337@qq.com * * *****************************************************************************/ #endregion using System.Xml.Serialization; namespace OSS.Tools.DirConfig { /// /// 默认配置处理 /// public class DefaultToolDirConfig : IToolDirConfig { /// public Task SetDirConfig(string key, TConfig dirConfig, string sourceName) { if (string.IsNullOrEmpty(key)) throw new ArgumentNullException(nameof(key), "配置键值不能为空!"); if (dirConfig == null) throw new ArgumentNullException(nameof(dirConfig), "配置信息不能为空!"); FileStream? fs = null; try { var filePath = Path.Combine(GetBasicPath(), $"{key}.config"); fs = new FileStream(filePath, FileMode.Create,FileAccess.Write); var type = typeof(TConfig); var xmlSer = new XmlSerializer(type); xmlSer.Serialize(fs, dirConfig); return Task.FromResult(true); } finally { fs?.Dispose(); } } /// public Task GetDirConfig(string key, string sourceName) { if (string.IsNullOrEmpty(key)) throw new ArgumentNullException(nameof(key), "配置键值不能为空!"); FileStream? fs = null; try { var fileFullName = Path.Combine(GetBasicPath(), $"{key}.config"); if (!File.Exists(fileFullName)) return Task.FromResult(default(TConfig)); fs = new FileStream(fileFullName, FileMode.Open, FileAccess.Read, FileShare.Read); var type = typeof(TConfig); var xmlSer = new XmlSerializer(type); return Task.FromResult((TConfig)xmlSer.Deserialize(fs)); } finally { fs?.Dispose(); } } /// public Task RemoveDirConfig(string key, string sourceName) { var fileName = Path.Combine(GetBasicPath(), $"{key}.config"); if (File.Exists(fileName)) { File.Delete(fileName); } return Task.CompletedTask; } private static string _defaultPath = string.Empty; private static string GetBasicPath() { if (!string.IsNullOrEmpty(_defaultPath)) { return _defaultPath; } _defaultPath = Path.Combine(AppContext.BaseDirectory, "ConfigFiles"); if (!Directory.Exists(_defaultPath)) { Directory.CreateDirectory(_defaultPath); } return _defaultPath; } } }