首页> C#>如何解决此问题的反应式扩展?
作者:互联网
我有一个关于反应式扩展的设计问题,这是方案:
我有一个汽车对象,该汽车对象有多个验证对象.每个验证对象都会将验证结果发送到汽车类.验证结果可以是成功或错误.当验证发送错误时,我想停下汽车,而当同一验证发送成功时,我想再次启动汽车.
换一种说法:
所有验证都会不断将验证结果发送到汽车.如果所有验证都发送成功,我希望汽车继续行驶,但是如果其中一个发送错误,我想停下汽车,直到我从验证中获得成功.
我正在尝试使用反应式扩展找到解决方案.
有任何想法吗?
谢谢
解决方法:
很简单.如果您有IEnumerable< IObservable< bool> (可以是观测值的数组或列表)称为xss,则可以执行以下操作:
IObservable<bool> combined =
xss
.CombineLatest()
.Select(xs => xs.Aggregate((b0, b1) => b0 && b1));
现在,只有当所有可观测值的最新值为true时,bind才为true.
请注意,只有在所有源可观测对象都产生值时,才会产生值.如果需要启动条件,则源可观察对象应具有使用StartWith扩展方法提供的默认值.
标签:system-reactive,c 来源: https://codeday.me/bug/20191031/1978429.html