using GFramework.Core.Abstractions.events; using GFramework.Core.Abstractions.utility; namespace GFramework.Core.Abstractions.configuration; /// /// 配置管理器接口,提供类型安全的配置存储和访问 /// 线程安全:所有方法都是线程安全的 /// public interface IConfigurationManager : IUtility { /// /// 获取配置数量 /// int Count { get; } /// /// 获取指定键的配置值 /// /// 配置值类型 /// 配置键 /// 配置值,如果不存在则返回类型默认值 T? GetConfig(string key); /// /// 获取指定键的配置值,如果不存在则返回默认值 /// /// 配置值类型 /// 配置键 /// 默认值 /// 配置值或默认值 T GetConfig(string key, T defaultValue); /// /// 设置指定键的配置值 /// /// 配置值类型 /// 配置键 /// 配置值 void SetConfig(string key, T value); /// /// 检查指定键的配置是否存在 /// /// 配置键 /// 如果存在返回 true,否则返回 false bool HasConfig(string key); /// /// 移除指定键的配置 /// /// 配置键 /// 如果成功移除返回 true,否则返回 false bool RemoveConfig(string key); /// /// 清空所有配置 /// void Clear(); /// /// 监听指定键的配置变化 /// /// 配置值类型 /// 配置键 /// 配置变化时的回调,参数为新值 /// 取消注册接口 IUnRegister WatchConfig(string key, Action onChange); /// /// 从 JSON 字符串加载配置 /// /// JSON 字符串 void LoadFromJson(string json); /// /// 将配置保存为 JSON 字符串 /// /// JSON 字符串 string SaveToJson(); /// /// 从文件加载配置 /// /// 文件路径 void LoadFromFile(string path); /// /// 将配置保存到文件 /// /// 文件路径 void SaveToFile(string path); /// /// 获取所有配置键 /// /// 配置键集合 IEnumerable GetAllKeys(); }