合并最新选择器

时间:2018-12-20 14:33:04

标签: c# system.reactive combinelatest

当将CombineLatest与不同类型的IObservables结合使用时,我目前正在使用选择器函数,该函数将元组简单地传递通过,因此可以在Subscribe方法中使用它。

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

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

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

1 个答案:

答案 0 :(得分:2)

您可以创建扩展方法,尽管您会丢失简单的名称:

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));
    }
}
相关问题