Rx Switch()操作符发生了什么变化?

Jim*_*nts 6 system.reactive

我正在通过Hands-On-Labs进行反应性扩展(Rx HOL .NET.pdf),这是我几天前从数据开发人员中心(这里)下载的.

我使用NuGet将这些引用添加到我的项目中:

System.Reactive 1.0.10621.0

System.Reactive.Windows.Forms 1.0.10621.0
Run Code Online (Sandbox Code Playgroud)

我差不多完成了实验,但是我试图实现.Switch()示例,Visual Studio无法找到扩展方法:

'System.IObservable'不包含'Switch'的定义,并且没有扩展方法'Switch'可以找到接受类型'System.IObservable'的第一个参数(你是否缺少using指令或汇编引用?)

现在我知道这个动手实验室文档已经过时了,因为某些内容已被重命名(已FromEvent成为FromEventPattern)并且某些内容已被删除(RemoveTimeStamp)并且此文档未反映出这一点.对于我的生活,我无法猜测他们重命名Switch的是什么,或者弄清楚他们可能会将它移动到哪个组件,或者找到一个全面的发行说明列表,表明它已被删除.

任何人都知道我在哪里可以找到Switch它的名字是什么?

Eni*_*ity 10

Switch扩展方法不扩展IObservable<T>-它延伸IObservable<IObservable<T>>.完整的签名是:

IObservable<TSource> Switch<TSource>(this IObservable<IObservable<TSource>> sources)
Run Code Online (Sandbox Code Playgroud)

尝试输入Observable.Empty<IObservable<object>>().,看看是否Switch出现.

如果没有,请检查using命名空间声明.

  • 是的 - 您通常在 Select 之后使用 Switch,就像 SelectMany 实际上只是在 Select 之后合并一样 (2认同)