Как сделать обобщённый Query и QueryHandler используя MediatR

Пытаюсь создать обобщённый Query запрос для получения объекта по его Id используя библиотеку MediatR. Первым делом я создал следующий сервис:

public interface IServiceBase<T> : IDomainService
{
    Task<T> GetObjectByIdAsync(Guid id, CancellationToken cancellationToken = default);
}

public class ServiceBase<T> : IServiceBase<T> where T : class, IEntity
{
    private readonly IAsyncRepository<T> _repository;

    public ServiceBase(IAsyncRepository<T> repository)
    {
        if (repository == null)
            throw new ArgumentNullException(nameof(repository));

        _repository = repository;
    }

    public async Task<T> GetObjectByIdAsync(Guid id, CancellationToken cancellationToken = default)
    {
        return await _repository.GetByIdAsync(id, cancellationToken);
    }
}

Далее сделал обобщённый запрос и его обработчик

public class FindObjectByIdQuery<T> : IRequest<T>
{
    public FindObjectByIdQuery(Guid id)
    {
        Id = id;
    }

    public Guid Id { get; }
}

Вызываю я данный запрос в обработчике команды

public class CreateCityHandler : IRequestHandler<CreateCity>
{
    private readonly ICityService _cityService;

    private readonly IMediator _mediator;

    public CreateCityHandler(ICityService cityService, IMediator mediator)
    {
        if (cityService == null)
            throw new ArgumentNullException(nameof(cityService));

        if (mediator == null)
            throw new ArgumentNullException(nameof(mediator));

        _cityService = cityService;
        _mediator = mediator;
    }

    public async Task<Unit> Handle(CreateCity request, CancellationToken cancellationToken)
    {
        var country = await _mediator.Send(new FindObjectByIdQuery<Country>(request.CountryId), cancellationToken);

        await _cityService.CreateCityAsync(request.Name, country, cancellationToken);

        return Unit.Value;
    }
}

При обработке данный команды у меня возникает ошибка

введите сюда описание изображения

Вот что я заметил если Service сделать необобщённым, то всё работает хорошо.

UPD

Действительно, после правильной регистрации дженерик сервисов всё заработало, но при обращении с обобщённому Query возникает ошибка.введите сюда описание изображения

В чём может быть дело?

Id страны передаю правильный


Ответы (0 шт):