Created
May 13, 2014 21:28
-
-
Save trailmax/30f1f73fff08fcd2064d to your computer and use it in GitHub Desktop.
Ambient Context pattern for domain events with static call and mock replacement
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public interface IDomainEventDispatcher | |
{ | |
void Dispatch<TEvent>(TEvent eventToDispatch) where TEvent : IDomainEvent; | |
} | |
public static class DomainEvents | |
{ | |
public static IDomainEventDispatcher Dispatcher { get; set; } | |
public static void Raise<TEvent>(TEvent eventToRaise) where TEvent : IDomainEvent | |
{ | |
Dispatcher.Dispatch(eventToRaise); | |
} | |
} | |
// raise your events in domain entities | |
DomainEvents.Raise(new NameChangedEvent(person.PersonId, person.Name)); | |
//Unit test your dispatcher | |
var domainEventsDispatcher = new Mock<IDomainEventDispatcher>(); | |
DomainEvents.Dispatcher = domainEventsDispatcher.Object; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment