Microsoft将IObservable<T>
interface引入了使用.NET Framework 4的BCL,我想,“很好,最后,我必须使用它!”所以我深入挖掘并阅读帖子和文档,甚至实现了模式。
在这样做之后,我意识到基本实现实际上将所有T
事件发送给所有订阅者,而不对其进行任何过滤;即普通广播。我在某处读到了Observable模式用于普通广播。我觉得这不是真的,我错过了一些东西。
我的问题:
如果我添加过滤机制,使用Observable模式和仅使用普通CLR事件有什么区别?
何时应该使用此模式,何时应该选择使用普通CLR事件?
Observable模式的主要优点是什么?
答案 0 :(得分:29)
可观察是Rx library的基石。它们提供了您需要的几乎所有实现和运算符。 IObservable<T>
和Rx
背后的想法不仅仅是“处理”事件,而是启用“LINQ to Events”。因此,您可以轻松编写“事件流”,与常规事件处理相比,它可以为您提供更多功能。
请注意,IObservable<T>
的MSDN实施示例为incorrect;已通知文档小组。