2

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

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

4

3 回答 3

4

IObservable是一个标识实现观察者模式的类的接口。它与收藏无关。它更多地与提供事件的替代方案有关。

于 2009-10-25T09:17:23.583 回答
2

新的 IObservable/IObserver 接口描述的东西是一个比集合更高的抽象,集合可以被看作是计算的一种特殊情况(这就是为什么 Haskell 中的列表是单子)。所以很明显,这种泛化是放在 System 命名空间中的。

看看Erik Meijer 的精彩演员阵容,他在其中描述了界面背后的想法。

于 2009-11-07T11:12:56.057 回答
1

虽然这是我偶然发现的一个老问题,但我只是想支持@ControlFlow 对 IObservable 和 IEnumerable 之间的“二元论”的评估,即“基于推送”与“基于拉取”的集合,并链接到 Erik Meijer 的“Rx in 15 Minutes” ',在那里可以引用他的话说。http://channel9.msdn.com/posts/Charles/Erik-Meijer-Rx-in-15-Minutes/

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

于 2010-09-13T08:06:57.480 回答