【发布时间】:2021-08-14 14:22:35
【问题描述】:
是否可以转换/验证 ISubject<T> 的值?
例如我有一个BehaviorSubject<double> zoomFactor = new(1);,我想将它夹在0.1 和10 之间。
- 应该可以调用
zoomFactor.OnNext(Math.Clamp(newZoomFactor, 0.1, 10)),但这样做会将责任推给调用者,我希望避免这种情况。 - 我可以使用
zoomFactor.Select(newZoomFactor => Math.Clamp(newZoomFactor, 0.1, 10))在观察后进行转换,但是:- 这是再次将责任外包给另一个调用者;
- 原始的
zoomFactor值不会在此处更改:想象用户缩小超过限制并重新放大,但在实际值静默返回时,渲染的缩放仍停留在10内部的钳位边界...
【问题讨论】:
-
是的,您可以使用
.Select转换主题的值。这就是它的用途。
标签: c# .net system.reactive reactivex rx.net