C# 组合测试选择器

C# 组合测试选择器,c#,system.reactive,combinelatest,C#,System.reactive,Combinelatest,当将CombineTest与不同类型的IObservables一起使用时,我当前使用的是一个选择器函数,它只是简单地传递元组,这样我就可以在Subscribe方法中使用它 IObservable<bool> obsBool; IObservable<int?> obsInt; obsBool .CombineLatest(obsInt, (b,i)=>(b,i) .Subscribe(t => doSomething(t.b, t.i));

当将CombineTest与不同类型的IObservables一起使用时,我当前使用的是一个选择器函数,它只是简单地传递元组,这样我就可以在Subscribe方法中使用它

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

obsBool
    .CombineLatest(obsInt, (b,i)=>(b,i)
    .Subscribe(t => doSomething(t.b, t.i));
IObservable-obsBool;
可观测的;
奥布布尔
.CombineLatest(obsInt,(b,i)=>(b,i)
.认购(t=>doSomething(t.b,t.i));

这可以简化为不使用simplify selector函数吗?(它不起任何作用)

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

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));
    }
}
void Main()
{
IObservable obsBool=null;
IObservable obsInt=null;
Action doSomething=null;
奥布布尔
.组合测试(obsInt)
.订阅(t=>doSomething(t.Item1,t.Item2));
}
公共静态类X
{
公共静态IObservable组合测试(此IObservable o1,IObservable o2)
{
返回o1.组合测试(o2,(t1,t2)=>(t1,t2));
}
}

选择器函数不是“什么都不做”——它将两个独立的参数组合成一个
元组。