.NET Framework 4.0 Beta2中的IObservable <t> </t>

时间:2009-10-25 09:10:36

标签: .net-4.0 namespaces system.reactive

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

P.S。 Silverlight Toolkit中的Reactive Framework预览包含IObserver<T>命名空间中的System.Collections.Generic

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

新的IObservable / IObserver接口描述的东西是一个抽象,远远高于只能被视为计算的特殊情况的集合(这就是Haskell中的列表是monad的原因)。因此很明显,这种泛化被置于System名称空间。

看看Erik Meijer的this brilliant cast,他描述了接口背后的想法。

答案 2 :(得分:1)

虽然这是一个我偶然发现的老问题,但我只想支持@ ControlFlow对IObservable和IEnumerable之间的'二元论'的评估,作为'基于推送'与'基于拉动'的集合,其链接指向Erik Meijer的'Rx'在15分钟内,他可以引用他的话。 http://channel9.msdn.com/posts/Charles/Erik-Meijer-Rx-in-15-Minutes/

因此,这种基于推送的集合可以从根本上将“一系列普通的被调用事件”的基本范式转换为异步的,可选择的,可查询的,可通过的和可订阅的一类声明可操作的集合。这样做的东西属于核心BCL命名空间或者可能值得拥有它,但是远远超出了Yet-Another-Collection来共享它的命名空间。请注意,这只是我的意见。