ObservableValue<T>¶
- 种类:
class - 命名空间:
Runestone.AesirArchitecture - 程序集:
Runestone.AesirArchitecture
继承链: System.Object → ObservableValue<T>
实现接口: Runestone.AesirArchitecture.IObservableValue<T>,Runestone.AesirArchitecture.IReadOnlyObservableValue<T>
类型参数
T— 属性值类型
声明¶
[Serializable]
public sealed class ObservableValue<T> : Runestone.AesirArchitecture.IObservableValue<T>,
Runestone.AesirArchitecture.IReadOnlyObservableValue<T>
可观察属性实现。 Model 层持有可写实例,View 层通过 IReadOnlyObservableValue{T} 只读订阅。
备注
内部使用 MiniEvent{T} 管理监听者——Invoke 路径零分配(直接多播调用)。 [SerializeField] 标记 value 字段使其可在 Inspector 中编辑。
PrivateValueFieldName 和 InvokeMethodName 常量供 ObservableValueAttributeProcessor 反射引用,避免硬编码字符串导致的重构断裂。
值比较使用 EqualityComparer{T}.Default.Equals,支持值类型和引用类型的正确比较。
构造方法¶
| 名称 | 描述 |
|---|---|
ObservableValue() |
默认构造,使用类型 T 的默认值 |
ObservableValue(T) |
默认构造,使用类型 T 的默认值 |
ObservableValue()¶
默认构造,使用类型 T 的默认值
ObservableValue(T)¶
默认构造,使用类型 T 的默认值
参数
| 名称 | 类型 | 说明 |
|---|---|---|
initialValue |
T |
— |
字段¶
| 名称 | 描述 |
|---|---|
InvokeMethodName |
— |
PrivateValueFieldName |
— |
InvokeMethodName¶
PrivateValueFieldName¶
属性¶
| 名称 | 描述 |
|---|---|
Value |
读写属性值。设置新值时若与旧值不同,则触发变更通知。 |
Value¶
读写属性值。设置新值时若与旧值不同,则触发变更通知。
备注
使用 EqualityComparer{T}.Default 判断值是否变化,仅在变化时触发 MiniEvent{T}.Invoke。
方法¶
声明的方法
| 名称 | 描述 |
|---|---|
AddListener(Action<T>) |
添加监听者。回调参数为新值。 |
AddListenerAndInvoke(Action<T>) |
添加监听并立即触发一次当前值,用于初始化时同步监听方状态。 |
ClearListeners() |
清除所有监听。 |
InvokeEvent() |
触发值变更通知,用于强制刷新订阅方状态。 |
RemoveListener(Action<T>) |
移除监听者。 |
SetValueSilently(T) |
静默设置值,不触发通知。用于反序列化或批量更新后统一触发。 |
继承的方法
| 名称 | 描述 | 声明类型 |
|---|---|---|
GetType() |
— | object |
Equals(object) |
— | object |
GetHashCode() |
— | object |
ToString() |
— | object |
MemberwiseClone() |
— | object |
Finalize() |
— | object |
AddListener(Action)¶
添加监听者。回调参数为新值。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
callback |
Action<T> |
值变更时调用的回调函数,参数为变更后的新值。 |
返回值
| 类型 | 说明 |
|---|---|
AutoRemoveListenerHandle |
返回一个 AutoRemoveListenerHandle,释放后自动移除监听,避免手动管理生命周期。 |
AddListenerAndInvoke(Action)¶
添加监听并立即触发一次当前值,用于初始化时同步监听方状态。
备注
先通过 AddListener 添加监听,再立即用当前值触发一次回调,确保订阅方在注册瞬间即可同步初始状态。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
callback |
Action<T> |
值变更时调用的回调函数,参数为变更后的新值。 |
返回值
| 类型 | 说明 |
|---|---|
AutoRemoveListenerHandle |
返回一个 AutoRemoveListenerHandle,释放后自动移除监听。 |
ClearListeners()¶
清除所有监听。
备注
清除所有监听引用,防止因监听者未释放导致的内存泄漏。 命名对齐可观察集合的 ClearListeners——清除的是监听者而非值本身。
InvokeEvent()¶
触发值变更通知,用于强制刷新订阅方状态。
备注
强制触发通知,用于值未变但需要刷新订阅方状态的场景。
RemoveListener(Action)¶
移除监听者。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
callback |
Action<T> |
先前通过 AddListener 注册的回调函数。 |
SetValueSilently(T)¶
静默设置值,不触发通知。用于反序列化或批量更新后统一触发。
备注
不触发变更通知,但仍做值比较——值未变时跳过赋值,避免无意义的引用替换。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
v |
T |
要设置的新值。 |
Additional Notes¶
首个
## Additional Notes是增量生成文档标识符,请勿修改标题级别和内容!本文档由Script Doc Generator辅助生成。