namespace GFramework.Core.Abstractions.StateManagement; /// /// 表示一次 Store 分发流程中的上下文数据。 /// 中间件和 Store 实现通过该对象共享当前 action、分发时间以及归约结果。 /// /// 状态树的根状态类型。 public sealed class StoreDispatchContext { /// /// 初始化一个新的分发上下文。 /// /// 当前分发的 action。 /// 分发前的状态快照。 /// 时抛出。 public StoreDispatchContext(object action, TState previousState) { Action = action ?? throw new ArgumentNullException(nameof(action)); PreviousState = previousState; NextState = previousState; DispatchedAt = DateTimeOffset.UtcNow; } /// /// 获取当前分发的 action 实例。 /// public object Action { get; } /// /// 获取当前分发的 action 运行时类型。 /// public Type ActionType => Action.GetType(); /// /// 获取分发前的状态快照。 /// public TState PreviousState { get; } /// /// 获取或设置归约后的下一状态。 /// Store 会在 reducer 执行完成后使用该值更新内部状态。 /// public TState NextState { get; set; } /// /// 获取或设置本次分发是否导致状态发生变化。 /// 中间件可读取该值进行日志和诊断,但通常应由 Store 负责最终判定。 /// public bool HasStateChanged { get; set; } /// /// 获取本次分发创建时的时间戳。 /// public DateTimeOffset DispatchedAt { get; } }