using GFramework.Core.Abstractions.Architectures;
namespace GFramework.Core.Architectures;
///
/// 作用域上下文提供者,用于多架构实例场景
///
public sealed class ScopedContextProvider : IArchitectureContextProvider
{
private readonly IArchitectureContext _context;
///
/// 初始化作用域上下文提供者
///
/// 要绑定的架构上下文实例
public ScopedContextProvider(IArchitectureContext context)
{
_context = context;
}
///
/// 获取当前的架构上下文
///
/// 架构上下文实例
public IArchitectureContext GetContext() => _context;
///
/// 尝试获取指定类型的架构上下文
///
/// 架构上下文类型
/// 输出的上下文实例
/// 如果成功获取则返回true,否则返回false
public bool TryGetContext(out T? context) where T : class, IArchitectureContext
{
if (_context is T typedContext)
{
context = typedContext;
return true;
}
context = null;
return false;
}
}