namespace GFramework.Core.Abstractions.Environment;
///
/// 定义环境接口,提供应用程序运行环境的相关信息
///
public interface IEnvironment
{
///
/// 获取环境名称
///
public string Name { get; }
///
/// 根据键值获取指定类型的环境配置值
///
/// 要获取的值的类型,必须为引用类型
/// 用于查找配置值的键
/// 与指定键关联的配置值,如果未找到则返回null
T? Get(string key) where T : class;
///
/// 尝试获取环境值(显式判断)
///
/// 要获取的值的类型,必须为引用类型
/// 用于查找配置值的键
/// 输出参数,如果找到配置值则返回该值,否则返回默认值
/// 如果找到指定键的配置值则返回true,否则返回false
bool TryGet(string key, out T value) where T : class;
///
/// 获取必须存在的环境值(强依赖)
///
/// 要获取的值的类型,必须为引用类型
/// 用于查找配置值的键
/// 与指定键关联的配置值,如果未找到则抛出异常
T GetRequired(string key) where T : class;
///
/// 注册键值对到环境值字典中
///
/// 要注册的键
/// 要注册的值
void Register(string key, object value);
///
/// 初始化环境值字典
///
void Initialize();
}