.net 4.0 IObservable<;T>;在.NET Framework 4.0 Beta2中

.net 4.0 IObservable<;T>;在.NET Framework 4.0 Beta2中,.net-4.0,namespaces,system.reactive,.net 4.0,Namespaces,System.reactive,IObservable和IObserver接口直接放置在.NET Framework 4.0 Beta2中的System命名空间中。为什么不在System.Collections.Generic,比如IEnumerable p、 Silverlight Toolkit中的美国反应式框架预览包含System.Collections.Generic命名空间中的IObserver。是一个接口,用于标识实现该模式的类。它与收藏无关。它与提供事件的替代方案更相关。新的IObservable/IObserv

IObservable
IObserver
接口直接放置在.NET Framework 4.0 Beta2中的
System
命名空间中。为什么不在
System.Collections.Generic
,比如
IEnumerable


p、 Silverlight Toolkit中的美国反应式框架预览包含
System.Collections.Generic
命名空间中的
IObserver

是一个接口,用于标识实现该模式的类。它与收藏无关。它与提供事件的替代方案更相关。

新的IObservable/IObserver接口所描述的东西是一种抽象,远远高于集合,集合可视为计算的一种特殊情况(这就是为什么Haskell中的列表是单子)。所以很明显,这样的泛化是放在系统名称空间中的


看看Erik Meijer,他在那里描述了界面背后的想法。

虽然这是我偶然发现的一个老问题,但我只是想支持@ControlFlow对IObservable和IEnumerable之间“二元论”的评估,即“推送式”与“拉式”的集合,并链接到Erik Meijer的“15分钟内接收”,在那里他可以被引用为确切地说


因此,这种基于推送的集合可以从根本上将“一系列平凡的被调用事件”的基本范式转变为一个异步、可选择、可查询、可通过和可订阅的声明性可操作事件的一流集合。这样做的东西属于核心BCL名称空间,或者可能值得拥有自己的名称空间,但它远远超出了另一个集合,无法共享其名称空间。请注意,这只是我的观点。

IObservable是IEnumerable的二元论,它不仅与事件有关,集合也可能是可观察的:)它只是基于推送的IEnumerable。Silverlight Toolkit中的ReactiveFramework在System.Collections.Generic命名空间中包含IObservable和IObserver接口,正如我所期望的那样,但在.NET 4.0中没有。你没有任何意义,ControlFlow。当然,收集可能是可见的。但是一个集合可能是可观察的这一事实并不意味着任何可观察的东西都是集合。CLI中有大量的泛型接口和类型不在System.Collections.generic中。@ControlFlow:IObservable/IObserver与集合无关。当然,一个集合是可以观察到的,但非集合也是可以观察到的。观察是一种比集合级别更低的东西,旨在以一种更解耦、更少特定于语言的方式支持观察者模式(即替代C#events)。它绝对不是IEnumerable的二元论。@ControlFlow:System.Collections.Generic命名空间用于系统定义的泛型集合。IObservable是系统定义的,它是泛型的,但它不是集合;实现IObservable的类的实例是一件事,而不是一组事。