IObservable <T>в .NET Framework 4.0 Beta2 - PullRequest
       26

IObservable <T>в .NET Framework 4.0 Beta2

2 голосов
/ 25 октября 2009
Интерфейсы

IObservable<T> и IObserver<T> размещаются непосредственно в пространстве имен System в .NET Framework 4.0 Beta2. Почему не в System.Collections.Generic, как IEnumerable<T>?

p.s. Предварительный просмотр Reactive Framework из Silverlight Toolkit содержит IObserver<T> в пространстве имен System.Collections.Generic.

Ответы [ 3 ]

4 голосов
/ 25 октября 2009

IObservable - это интерфейс, который определяет класс, реализующий шаблон Observer Это не связано с коллекциями. Это больше связано с предоставлением альтернативы Событиям.

2 голосов
/ 07 ноября 2009

То, что описывают новые интерфейсы IObservable / IObserver, - это абстракция, которая намного выше, чем просто коллекции, которые можно рассматривать как особый случай вычислений (поэтому списки в Haskell являются монадами). Таким образом, очевидно, что такое обобщение помещается в пространство имен System.

Взгляните на этот блестящий актерский состав от Эрика Мейера, где он описывает идеи, лежащие в основе интерфейсов.

1 голос
/ 13 сентября 2010

Хотя это старый вопрос, на который я наткнулся, я просто хотел поддержать @ ControlFlow оценку «дуализма» между IObservable и IEnumerable как коллекцию «на основе толчка» и «на основе тяги» со ссылкой на «Rx» Эрика Мейера через 15 минут », где он может быть процитирован так, что он сказал именно это. http://channel9.msdn.com/posts/Charles/Erik-Meijer-Rx-in-15-Minutes/

Следовательно, эта основанная на толчке коллекция может фундаментально сместить базовую парадигму «мирской серии вызываемых событий» в асинхронную, выбираемую, доступную по запросу, проходимую и способную подписаться коллекцию первоклассного декларативного действия. То, что делает это, принадлежит к базовому пространству имен BCL или, возможно, заслуживает его собственного, но слишком далеко за пределами Коллекции имен, чтобы разделить его пространство имен. Имейте в виду, это только мое мнение.

...