Я работаю над приложением веб-API ASP.NET Core 2.2 с Mediatr.
У меня есть обработчик, который выглядит так -
public class MyQueryHandler<T> : IRequestHanlder<MyQuery<T>, IQueryable<T>>
{
public Task<IQueryable<T>> Handle(MyQuery<T> myquery, CancellationToken cancellationToken)
{
//perform query
IQueryable<T> models = someDatabaseQuery.ProjectTo<T>();
}
}
Это запрос -
public class MyQuery<T> : IRequest<IQueryable<T>>
{
//some properties
}
Когда я пытаюсь сделать такой запрос -
var result = await _mediator.Send(new MyQuery<SomeModel> {/* set the properties on the query */})
У меня исключение -
An unhandled exception occurred while processing the request.
InvalidOperationException: Handler was not found for request of type MediatR.IRequestHandler`2[MyQuery`1[SomeModel],System.Linq.IQueryable`1[SomeModel]]. Register your handlers with the container. See the samples in GitHub for examples.
Я потратил довольно много часов, пробовал много чего, но ни один из них не помог. Я даже устал использовать Autofac вместе со сбором сервисов, следуя примеру, приведенному в репозитории Mediator на github.
Dtos
, чтобы его обработчик можно было легко зарегистрировать во время выполнения. Если вы хотите создать общий обработчик запросов, почему бы просто не использовать Behaviors? - person GoldenAge   schedule 15.08.2019MyQuery<T>
- person GoldenAge   schedule 15.08.2019