IObservable<T>
和IObserver<T>
接口直接放在.NET Framework4.0 Beta2的System
命名空间中。为什么不像IEnumerable<T>
那样在System.Collections.Generic
中使用
附注:Silverlight Toolkit中的Reactive Framework预览在System.Collections.Generic
命名空间中包含IObserver<T>
。
发布于 2009-11-07 11:12:56
新的IObservable/I观察者接口描述的东西是比集合更高的抽象,这可以被视为计算的特例(这就是为什么Haskell中的列表是单体的原因)。因此,很明显,这种泛化是放在System名称空间中。
看看Erik Meijer的this brilliant cast,他描述了接口背后的想法。
发布于 2009-10-25 09:17:24
IObservable是标识实现Observer模式的类的接口。它与集合无关。它更多地与提供事件的替代方案有关。
发布于 2010-09-13 08:06:57
虽然这是我偶然遇到的一个老问题,但我只是想支持@ControlFlow对IObservable和IEnumerable之间的“二元论”的评估,认为这是一个“基于推送”和“基于拉取”的集合,并提供了Erik Meijer的“15分钟内的处方”的链接,可以引用他的话来说明这一点。http://channel9.msdn.com/posts/Charles/Erik-Meijer-Rx-in-15-Minutes/
因此,这个基于推送的集合可以从根本上将“一系列普通的调用事件”的基本范例转变为一个异步的、可选择的、可查询的、可传递的和可订阅的声明性可操作的一级集合。这样做的东西属于核心BCL名称空间,或者可能应该拥有自己的名称空间,但远远超出了另一个集合,无法共享其名称空间。请注意,这只是我的观点。
https://stackoverflow.com/questions/1620434
复制