我有一个围绕被动扩展的设计问题,这是场景: 我有一个汽车对象,该汽车对象有多个验证对象。每个验证对象都会将验证结果发送到汽车类。验证结果可以是成功或错误。当验证发送错误时我想停止汽车,当相同的验证发送成功时,我想再次启动汽车。 换句话说:
所有验证都会不断向汽车发送验证结果。如果所有验证都发送成功,我希望汽车继续运行,但如果其中一个发送错误,我想停车,直到我从验证中获得成功。
我正试图通过反应式扩展找到解决方案。
有什么想法吗?
由于
答案 0 :(得分:4)
非常简单。如果您有一个名为IEnumerable<IObservable<bool>>
的{{1}}(可能是一个可观察的数组或列表),那么您可以这样做:
xss
当所有可观察量的最新值为IObservable<bool> combined =
xss
.CombineLatest()
.Select(xs => xs.Aggregate((b0, b1) => b0 && b1));
时,combined
只会true
。
请注意,这只会在所有源可观察量都产生值时生成一个值。如果您需要一个起始条件,则源可观察量应具有使用true
扩展方法提供的默认值。