我有一个返回界面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;
}
答案 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));