using System;
using System.Collections.Generic;
using GFramework.Core.Abstractions.model;
namespace GFramework.Game.Abstractions.setting;
///
/// 定义设置模型的接口,提供获取特定类型设置节的功能
///
public interface ISettingsModel : IModel
{
///
/// 获取指定类型的设置节实例
///
/// 设置节的类型,必须是class、实现ISettingsSection接口且具有无参构造函数
/// 指定类型的设置节实例
T Get() where T : class, ISettingsSection, new();
///
/// 尝试获取指定类型的设置节实例
///
/// 要获取的设置节类型
/// 输出参数,如果成功则包含找到的设置节实例,否则为null
/// 如果找到指定类型的设置节则返回true,否则返回false
bool TryGet(Type type, out ISettingsSection section);
///
/// 获取所有设置节的集合
///
/// 包含所有设置节的可枚举集合
IEnumerable All();
///
/// 注册一个可应用的设置对象
///
/// 要注册的可应用设置对象
void Register(IApplyAbleSettings applyAble);
}