/// <summary> /// Executes this strategy to dispatch an event /// </summary> /// <typeparam name="TEvent">Event type</typeparam> /// <param name="event">Event data</param> /// <param name="handlers">Event handlers</param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task Dispatch <TEvent>(TEvent @event, IEnumerable <IEventHandler <TEvent> > handlers, CancellationToken cancellationToken) where TEvent : IEvent { var queuedEvent = (QueuedEventWrapperBase) Activator.CreateInstance(typeof(QueuedEventWrapper <>).MakeGenericType(typeof(TEvent)), @event, handlers); await _eventQueue.EnqueueEvent(queuedEvent, cancellationToken); }