using GFramework.Core.Abstractions.environment;
using GFramework.Core.Abstractions.rule;
namespace GFramework.Core.extensions;
///
/// 提供对 IContextAware 接口的环境访问扩展方法
///
public static class ContextAwareEnvironmentExtensions
{
///
/// 获取指定类型的环境对象
///
/// 要获取的环境对象类型
/// 上下文感知对象
/// 指定类型的环境对象,如果无法转换则返回null
public static T? GetEnvironment(this IContextAware contextAware) where T : class
{
ArgumentNullException.ThrowIfNull(contextAware);
var context = contextAware.GetContext();
return context.GetEnvironment() as T;
}
///
/// 获取环境对象
///
/// 上下文感知对象
/// 环境对象
public static IEnvironment GetEnvironment(this IContextAware contextAware)
{
ArgumentNullException.ThrowIfNull(contextAware);
var context = contextAware.GetContext();
return context.GetEnvironment();
}
}