using GFramework.Core.Abstractions.model; namespace GFramework.Game.Abstractions.setting; /// /// 定义设置模型的接口,提供获取特定类型设置节的功能 /// public interface ISettingsModel : IModel { /// /// 获取或创建数据设置(自动创建) /// /// 设置数据的类型,必须继承自class、ISettingsData且具有无参构造函数 /// 指定类型的设置数据实例 T GetData() where T : class, IResettable, new(); /// /// 尝试获取指定类型的设置节实例 /// /// 要获取的设置节类型 /// 输出参数,如果成功则包含找到的设置节实例,否则为null /// 如果找到指定类型的设置节则返回true,否则返回false bool TryGet(Type type, out ISettingsSection section); /// /// 获取已注册的可应用设置 /// /// 可应用设置的类型,必须继承自class和IApplyAbleSettings /// 指定类型的可应用设置实例,如果不存在则返回null T? GetApplicator() where T : class, IApplyAbleSettings; /// /// 获取所有设置数据的集合 /// /// 包含所有设置数据的可枚举集合 IEnumerable AllData(); /// /// 获取所有可应用设置的集合 /// /// 包含所有可应用设置的可枚举集合 IEnumerable AllApplicators(); /// /// 注册可应用设置(必须手动注册) /// /// 可应用设置的类型,必须继承自class和IApplyAbleSettings /// 要注册的可应用设置实例 /// 返回当前设置模型实例,支持链式调用 ISettingsModel RegisterApplicator(T applicator) where T : class, IApplyAbleSettings; /// /// 注册设置迁移器 /// /// 要注册的设置迁移实例 /// 返回当前设置模型实例,支持链式调用 ISettingsModel RegisterMigration(ISettingsMigration migration); /// /// 异步初始化指定类型的设置 /// /// 要初始化的设置类型数组 /// 异步操作任务 Task InitializeAsync(params Type[] settingTypes); }