示例#1
0
        public async Task <TResult> Handle(TQuery query, IDictionary <string, object> arguments = null, CancellationToken cancellationToken = default)
        {
            if (_validators.Any())
            {
                _log.Debug("Validating query {queryType}", query.GetType());

                foreach (var validator in _validators)
                {
                    _log.Verbose("Validating query {queryType} with {validatorType}", query.GetType(), validator.GetType());
                    await validator.ValidateAndThrowAsync(query, null, cancellationToken);
                }

                _log.Verbose("Validation of query {queryType} succeeded", query.GetType());
            }
            else
            {
                _log.Debug("No validator found for query {queryType}", query.GetType());
            }

            _log.Verbose("Handling {queryType} with {handlerType} ({handlerId})", typeof(TQuery), _queryHandler.GetType(), _queryHandler.GetHashCode());
            return(await _queryHandler.Handle(query, arguments, cancellationToken));
        }