如何转换IObservable <a> to IObservable<b></b></a>

时间:2010-11-29 21:41:28

标签: .net silverlight system.reactive

我有一个返回界面IObservable<A>的方法(在silverlight中)并希望将其转换为另一个IObservable<B>

那么我需要代替'CONVERT_SOME_HOW'

public IObservable<Bar> Get(IEnumerable<object> @params)
{

    IObservable<Foo> fooObservable = _resources.Get(@params);
    IObservable<Bar> barObservable = CONVERT_SOME_HOW(fooObservable);

    return barObservable;
}

2 个答案:

答案 0 :(得分:7)

就像在LINQ to Objects中一样,使用投影:

var observableB = observableA.Select(a => new B(a));

(显然,根据你的转换进行调整。)

这是假设我正确理解了这个问题。 “执行第一个观察者的订阅时”的含义并不十分清楚。

答案 1 :(得分:0)

正如Jon建议的那样,如果您从A转换为B,那么您可以使用Select

但是,您也有可能从A转换为IObservable<B>,在这种情况下,您可以使用SelectMany:

var observableB = observableA.SelectMany(a => GetObservableB(a));
相关问题