GFramework/GFramework.Core/StateManagement/StoreStateChangedEvent.cs
GeWuYou 91246ff482 feat(state): 扩展状态管理功能支持历史记录撤销重做和批处理
- 新增 RunInBatch() 方法支持批处理通知折叠
- 添加 Undo()/Redo() 基于历史缓冲区的状态回退前进功能
- 实现 TimeTravelTo() 跳转到指定历史索引的能力
- 提供 ClearHistory() 以当前状态重置历史锚点的功能
- 支持可选历史缓冲区、撤销/重做和时间旅行功能
- 添加可选批处理通知折叠机制
- 实现多态 action 匹配(基类/接口)支持
- 在诊断信息中增加历史游标和批处理状态
- StoreBuilder 新增 WithHistoryCapacity() 和 WithActionMatching() 配置方法
- 优化 reducer 注册支持全局序号以实现稳定排序
- 实现多态匹配时的类型继承距离计算
- 添加批处理嵌套支持和状态通知延迟机制
2026-03-24 19:08:03 +08:00

30 lines
999 B
C#

namespace GFramework.Core.StateManagement;
/// <summary>
/// 表示一条由 Store 状态变更桥接到 EventBus 的事件。
/// 该事件会复用 Store 对订阅通知的折叠语义,因此在批处理中只会发布最终状态。
/// </summary>
/// <typeparam name="TState">状态树的根状态类型。</typeparam>
public sealed class StoreStateChangedEvent<TState>
{
/// <summary>
/// 初始化一个新的 Store 状态变更桥接事件。
/// </summary>
/// <param name="state">最新状态快照。</param>
/// <param name="changedAt">状态变更时间。</param>
public StoreStateChangedEvent(TState state, DateTimeOffset changedAt)
{
State = state;
ChangedAt = changedAt;
}
/// <summary>
/// 获取最新状态快照。
/// </summary>
public TState State { get; }
/// <summary>
/// 获取该状态对外广播的时间。
/// </summary>
public DateTimeOffset ChangedAt { get; }
}