using GFramework.Core.Abstractions.architecture;
using GFramework.Core.Abstractions.rule;
using GFramework.Core.architecture;
namespace GFramework.Core.rule;
///
/// 上下文感知基类,实现了IContextAware接口,为需要感知架构上下文的类提供基础实现
///
public abstract class ContextAwareBase : IContextAware
{
///
/// 获取当前实例的架构上下文
///
protected IArchitectureContext? Context { get; set; }
///
/// 设置架构上下文的实现方法,由框架调用
///
/// 要设置的架构上下文实例
void IContextAware.SetContext(IArchitectureContext context)
{
Context = context;
OnContextReady();
}
///
/// 获取架构上下文
///
/// 当前架构上下文对象
IArchitectureContext IContextAware.GetContext()
{
Context ??= GameContext.GetFirstArchitectureContext();
return Context;
}
///
/// 当上下文准备就绪时调用的虚方法,子类可以重写此方法来执行上下文相关的初始化逻辑
///
protected virtual void OnContextReady()
{
}
}