public async Task <TQueryResult> Handle(TQuery request, CancellationToken cancellationToken, RequestHandlerDelegate <TQueryResult> next) { if (request == null) { throw new ArgumentNullException($"{typeof(TQuery)} is null"); } if (_queryValidator != null) { var result = await _queryValidator.ValidateAsync(request, cancellationToken); if (!result.IsValid) { throw new Exception(string.Join(", ", result.Errors.Select(x => x.ErrorMessage))); } } return(await next()); }