Skip to content

Apq.ChangeBubbling变更冒泡事件库

支持 Rx 响应式流、弱引用消息和可插拔调度环境

Apq.ChangeBubbling

快速安装

bash
dotnet add package Apq.ChangeBubbling
xml
<PackageReference Include="Apq.ChangeBubbling" Version="1.0.*" />

简单示例

csharp
using Apq.ChangeBubbling.Nodes;

// 创建节点树
var root = new ListBubblingNode<string>("Root");
var child = new ListBubblingNode<int>("Child");

// 建立父子关系
root.AttachChild(child);

// 订阅变更事件
root.NodeChanged += (sender, change) =>
{
    Console.WriteLine($"变更: {change.PropertyName}, 类型: {change.Kind}, 路径: {string.Join(".", change.PathSegments)}");
};

// 子节点的变更会自动冒泡到父节点
child.Add(42);
child.Add(100);

核心特性

特性说明
变更冒泡子节点变更自动冒泡到父节点,携带完整路径
Rx 响应式支持 Observable 流、节流、缓冲、过滤
弱引用消息避免内存泄漏,自动清理失效订阅
批量操作BeginBatch/EndBatch 收集并批量触发事件
事件合并BeginCoalesce/EndCoalesce 合并同属性多次变更
背压管线基于 TPL Dataflow 的背压处理管线
快照服务节点树快照导出与导入
线程安全提供 ConcurrentBag/ConcurrentDictionary 节点

节点类型

类型描述
ListBubblingNode<T>基于列表的冒泡节点
DictionaryBubblingNode<TKey, TValue>基于字典的冒泡节点
ConcurrentBagBubblingNode<T>线程安全的列表冒泡节点
ConcurrentDictionaryBubblingNode<TKey, TValue>线程安全的字典冒泡节点

支持的框架

框架版本
.NET8.0, 10.0 (LTS)

基于 MIT 许可发布