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());
        }