Silverlight ObservableCollection v. Реактивные расширения для .NET (Rx) - PullRequest
5 голосов
/ 03 февраля 2011

Я полагаю, что я что-то здесь упускаю, но я просто читал эту статью jesse liberty относительно Reactive Extensions для .Net .Его пример для Window Phone 7 с использованием Silverlight, но Silverlight также имеет тип данных ObservableCollection.Поэтому я пытаюсь выяснить, в чем разница ... возможно, Rx более мощный?

Кто-нибудь может сравнить и сопоставить это?Когда бы я использовал один поверх другого?

Спасибо

Ответы [ 2 ]

7 голосов
/ 03 февраля 2011

ObservableCollection и RX имеют только одну общую черту - слово Observable .

Вот и все.

ObservableCollection - это ориентированный на пользовательский интерфейс класс, который реализует INotifyCollectionChanged.

Reactive Extensions - это библиотека, построенная вокруг интерфейсов IObservable и IObserver, которые не связаны напрямую с пользовательским интерфейсом (хотя и могут использоватьсяуспешно в сценариях пользовательского интерфейса).

3 голосов
/ 04 февраля 2011

Это неудачное имя, но вот коллекция, которая является наблюдаемой в смысле Silverlight, а также в смысле Rx.NET:

https://github.com/xpaulbettsx/ReactiveUI/blob/master/ReactiveUI/ReactiveCollection.cs

Например:

myReactiveCollection.ItemsAdded
    .Subscribe(x => Console.WriteLine("{0} was added", x));

Этот класс является частью ReactiveUI , который представляет собой инфраструктуру M-V-VM, которая интегрируется с Rx.NET (полное раскрытие: я написал его)

...