【问题标题】:CombineLatest Selector组合最新选择器
【发布时间】:2018-12-20 14:33:03
【问题描述】:

在将 CombineLatest 与不同类型的 IObservable 一起使用时,我目前正在使用一个选择器函数,该函数只是简单地传递元组,因此我可以在订阅方法中使用它。

IObservable<bool> obsBool;
IObservable<int?> obsInt;

obsBool
    .CombineLatest(obsInt, (b,i)=>(b,i)
    .Subscribe(t => doSomething(t.b, t.i));

这可以简化以摆脱简化选择器功能吗? (什么都不做)

【问题讨论】:

  • 选择器函数不会“什么都不做”——它将两个单独的参数组合成一个Tuple

标签: c# system.reactive combinelatest


【解决方案1】:

你可以创建一个扩展方法,虽然你会失去简单的名字:

void Main()
{
    IObservable<bool> obsBool = null;
    IObservable<int?> obsInt = null;
    Action<bool, int?> doSomething = null;

    obsBool
        .CombineLatest(obsInt)
        .Subscribe(t => doSomething(t.Item1, t.Item2));
}

public static class X
{
    public static IObservable<(T1, T2)> CombineLatest<T1, T2>(this IObservable<T1> o1, IObservable<T2> o2)
    {
        return o1.CombineLatest(o2, (t1, t2) => (t1, t2));
    }
}

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 2013-12-16
    • 2014-12-09
    • 2023-03-13
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 2014-09-18
    • 2021-07-08
    相关资源
    最近更新 更多