【问题标题】:How to convert from IObservable<A> to IObservable<B>如何从 IObservable<A> 转换为 IObservable<B>
【发布时间】:2010-11-29 21:41:27
【问题描述】:

我有一个方法返回接口IObservable&lt;A&gt;(在silverlight 中)并希望将其转换为另一个IObservable&lt;B&gt;

那么我需要用什么来代替“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;
}

【问题讨论】:

  • 如何将Foo 转换为Bar

标签: .net silverlight system.reactive


【解决方案1】:

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

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

(显然,根据您的转化进行调整。)

假设我正确理解了这个问题。您所说的“执行第一个观察者的订阅时”的意思不是很清楚。

【讨论】:

  • @AWC:没关系——你只需要提供FooBar之间的转换。
  • 在这棵树上看不到木头 :)
【解决方案2】:

正如 Jon 所建议的,如果您有从 AB 的转换,那么您可以使用 Select

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

var observableB = observableA.SelectMany(a => GetObservableB(a));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    相关资源
    最近更新 更多