using GFramework.Core.Abstractions.architecture; using GFramework.Core.Abstractions.rule; using GFramework.Core.Abstractions.state; namespace GFramework.Core.state; /// /// 上下文感知状态基类 /// 提供基础的状态管理功能和架构上下文访问能力 /// 实现了IState和IContextAware接口 /// public class ContextAwareStateBase : IState, IContextAware { /// /// 架构上下文引用,用于访问架构相关的服务和数据 /// private IArchitectureContext? _context; /// /// 设置架构上下文 /// /// 架构上下文实例 public void SetContext(IArchitectureContext context) { _context = context; } /// /// 获取架构上下文 /// /// 架构上下文实例 public IArchitectureContext GetContext() { return _context!; } /// /// 进入状态时调用的方法 /// 子类可重写此方法以实现特定的状态进入逻辑 /// /// 从哪个状态转换而来,可能为null表示初始状态 public virtual void OnEnter(IState? fromState) { } /// /// 退出状态时调用的方法 /// 子类可重写此方法以实现特定的状态退出逻辑 /// /// 将要转换到的目标状态,可能为null表示结束状态 public virtual void OnExit(IState? toState) { } /// /// 判断当前状态是否可以转换到目标状态 /// 子类可重写此方法以实现自定义的状态转换规则 /// /// 希望转换到的目标状态对象 /// 如果允许转换则返回true,否则返回false public virtual bool CanTransitionTo(IState targetState) { return true; } }