Exemple #1
0
        private async Task <TResult> ExecuteQueryAsync <TQuery, TResult>(TQuery query, IExecutionContext executionContext) where TQuery : IQuery <TResult>
        {
            if (query == null)
            {
                return(default(TResult));
            }

            var cx = await CreateExecutionContextAsync(executionContext);

            var handler = _queryHandlerFactory.CreateAsyncHandler <TQuery, TResult>();

            if (handler == null)
            {
                throw new MissingHandlerMappingException(typeof(TQuery));
            }

            _modelValidationService.Validate(query);
            _executePermissionValidationService.Validate(query, handler, cx);
            var result = await handler.ExecuteAsync(query, cx);

            return(result);
        }