像前端一样在.NET中简单地使用响应式数据。
- 实现了
IObservable<T>
,因此可以与Rx.NET
配合使用 - 实现了
INotifyPropertyChanged
等接口,可以与WPF
等传统数据绑定一起工作 - 支持从.NET Standard 2.1(Unity)到.NET8+,且针对.NET新版本功能做了不同的优化
- 依赖反射和动态代码的部分较少,可以在.NET Native AOT或者Unity IL2CPP等AOT环境下运行,只有少数方法不能使用。如果使用.NET7+,可以从方法的注解上看出哪些在AOT下会出现问题
-
IReadOnlyRef<T> 表示一个只读的响应式值的引用
-
IRef<T> 表示一个可写入的响应式值的引用
以上类型可以通过创建响应式对象的实例,或者通过RefHelpers
的工具方法生成
- RefHelpers
提供了大量工具方法用于封装现有对象为响应式对象,例如将类的一个属性封装为独立的
IRef<T>
,使其可以用于创建计算属性
可读写的响应式对象引用,实现了IRef<T>
相当于vue
的ShallowRef
,或者@preact/signals
的Signal
,对所引用的对象具有浅层响应式
只读的计算属性引用,仅当依赖变化时才会重新计算,实现了IReadOnlyRef<T>
。
计算属性可以依赖任何实现了IReadOnlyRef<T>
接口的类型(包括其他计算属性)
相当于vue
的Computed
,但是语法上更接近react
的useMemo
var a = new Ref<int>(1);
var b = new Ref<int>(1);
var c = new Computed<int, int, int>(() =>
{
return a.Value + b.Value;
}, a, b);
a.Value = 2;
Console.WriteLine(c.Value); // 3
提供一些方法监听依赖的变更并执行副作用,类似vue
的watch
。
支持同步和异步的版本