CombineLatest Selector - PullRequest
       12

CombineLatest Selector

0 голосов
/ 20 декабря 2018

При использовании 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 голосов
/ 20 декабря 2018

Вы можете создать метод расширения, хотя вы потеряете простые имена:

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));
    }
}
...