Esempio n. 1
0
 public static void Dispatch(AggregateRoot aggregate, IEvent @event)
 {
     var router = _routers.GetOrAdd(
         aggregate.GetType(),
         t => new Lazy<EventRouter>(
             () => new EventRouter(t)))
         .Value;
     router.InternalDispatch(aggregate, @event);
 }
Esempio n. 2
0
        public virtual void InternalDispatch(AggregateRoot aggregate, IEvent @event)
        {
            if (@event == null) throw new ArgumentNullException("event");

            MethodInfo handler;
            if (this._handlers.TryGetValue(@event.GetType(), out handler))
                handler.Invoke(aggregate, new[] { @event });
            else
                throw new HandlerNotFoundException(@event);
        }