private bool HandleEvent(Type eventType, IEvent @event) { Contract.Requires(eventType, "eventType"); Contract.Requires(@event, "@event"); List <HandlerInfo> handlers; if (!_handlersByEventType.TryGetValue(eventType, out handlers)) { return(false); } IDomainModel targetDomainModel = _store.GetDomainModel(@event.Domain); if (targetDomainModel == null) { return(false); } foreach (var info in handlers) { if ((info.DomainModelName == null || String.Compare(info.DomainModelName, targetDomainModel.Name, StringComparison.OrdinalIgnoreCase) == 0)) { var commands = info.Handler(targetDomainModel, @event); Session.Current.Execute(commands.ToArray()); } } return(handlers.Count > 0); }
private IEventDispatcher GetEventDispatcher(IEvent @event) { var domainModel = _store.GetDomainModel(@event.Domain); if (domainModel.EventDispatcher != null) { return(domainModel.EventDispatcher); } if (_defaultDispatcher == null) { _defaultDispatcher = _store.Services.Resolve <IEventDispatcher>(); DebugContract.Assert(_defaultDispatcher != null); } return(_defaultDispatcher); }