Exemple #1
0
        private static Task InvokeHandlerAsync(EventHandlerDescriptor descriptor, EventHandlerRequest request, CancellationToken cancellationToken)
        {
            Contract.Requires(descriptor != null);
            Contract.Requires(request != null);

            IEventHandler handler = descriptor.CreateHandler(request);

            if (handler == null)
            {
                throw CreateHandlerNotFoundException(descriptor);
            }

            request.RegisterForDispose(handler, true);
            EventHandlerContext context = new EventHandlerContext(request, descriptor);

            context.Handler      = handler;
            handler.EventContext = context;
            EventFilterGrouping filterGrouping = descriptor.GetFilterGrouping();

            ServicesContainer   servicesContainer = request.Configuration.Services;
            IEventHandlerResult result            = new EventHandlerFilterResult(context, servicesContainer, filterGrouping.EventHandlerFilters);

            return(result.ExecuteAsync(cancellationToken));
        }