shiftkey / Reactive.EventAggregator

A portable event aggregator for pub-sub messaging, using Rx, for .NET 4+, SL5, WP8+ and Windows Store Apps
MIT License
84 stars 15 forks source link

## Reactive.EventAggregator

This is an update of a blog post from José F. Romaniello about using Reactive Extensions to implement an event aggregator. source

Build status

Usage

To install it, just run this from the Package Manager Console:

Install-Package Reactive.EventAggregator

Why bring it back?

Three reasons:

Samples

Subscribing to an event

// arrange
var eventWasRaised = false;
var eventPublisher = new EventAggregator();

// act
eventPublisher.GetEvent<SampleEvent>()
              .Subscribe(se => eventWasRaised = true);

eventPublisher.Publish(new SampleEvent());

// assert
eventWasRaised.ShouldBe(true);

Disposing of the event

// arrange
var eventWasRaised = false;
var eventPublisher = new EventAggregator();

// act
var subscription = eventPublisher.GetEvent<SampleEvent>()
                                 .Subscribe(se => eventWasRaised = true);

subscription.Dispose();
eventPublisher.Publish(new SampleEvent());

// assert
eventWasRaised.ShouldBe(false);

Selectively subscribing to an event

// arrange
var eventWasRaised = false;
var eventPublisher = new EventAggregator();

// act
eventPublisher.GetEvent<SampleEvent>()
              .Where(se => se.Status == 1)
              .Subscribe(se => eventWasRaised = true);

eventPublisher.Publish(new SampleEvent { Status = 1 });

// assert
eventWasRaised.ShouldBe(true);