Create a gist now

Instantly share code, notes, and snippets.

Ambient Context pattern for domain events with static call and mock replacement
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
// 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