编程语言
首页 > 编程语言> > 首页> C#>如何解决此问题的反应式扩展?

首页> 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