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

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

有帮助吗?

解决方案

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

看看来自Erik Meijer的精彩演员,他描述了界面背后的想法。

其他提示

IObservable 是一个识别的界面实现观察者模式的类。它与收藏无关。它与提供事件的替代方案更为相关。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top