当将CombineLatest与不同类型的IObservables结合使用时,我目前正在使用选择器函数,该函数将元组简单地传递通过,因此可以在Subscribe方法中使用它。
IObservable<bool> obsBool;
IObservable<int?> obsInt;
obsBool
.CombineLatest(obsInt, (b,i)=>(b,i)
.Subscribe(t => doSomething(t.b, t.i));
这可以简化以摆脱简化选择器功能吗? (什么都不做)
答案 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));
}
}