Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Следовательно, эта коллекция на основе принудительных запросов может фундаментально изменить базовую парадигму "обычной серии вызываемых событий" в асинхронную, выбираемую, доступную для запросов, проходимую и подписываемую первоклассную коллекцию декларативных действий.Что-то, что делает это, принадлежит основному пространству имен BCL или, возможно, заслуживает своего собственного, но находится слишком далеко за пределами Yet-Another-Collection, чтобы делиться своим пространством имен.Имейте в виду, это всего лишь мое мнение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top