У меня есть обработчик запросов Mediatr, который я хочу принять один из двух разных (связанных) запросов. Когда я использую базовый запрос, он работает нормально, но когда я использую PermissionedGetInformationRequest
, я получаю сообщение об ошибке, указывающее, что он не может найти обработчик для моего запроса.
Ошибка построения обработчика для запроса типа MediatR.IRequestHandler2 [PermissionedGetInformationRequest, DataIWantView]. Зарегистрируйте свои обработчики в контейнере
Я не уверен, что я просто не настроил свой контейнер IoC должным образом, или контейнер не поддерживает то, что я пытаюсь сделать, или я пытаюсь сделать что-то, что не поддерживается Mediatr (но Я почти уверен, что это так, я, кажется, помню, что у нас был похожий код, который нормально работал с нашим старым IoC, StructureMap)
У меня есть просьба:
public class GetInformationRequest : IRequest<DataIWantView>
{
}
и запрос, унаследованный от этого
public class PermissionedGetInformationRequest : GetInformationRequest
{
public int RequesterId { get;set; }
}
и обработчик запроса:
public class GetInformationHandler : IRequestHandler<GetInformationRequest, DataIWantView>
{
public Task<DataIWantView> Handle(GetInformationRequestrequest, CancellationToken cancellationToken)
{
if (request is PermissionedGetInformationRequest permissionedRequest)
{
// Check permission
}
// Get the data I want
}
}
Я использую dryioc в качестве контейнера IoC, а для регистрации своих обработчиков я использую
container.RegisterMany(new[] { typeof(GetInformationHandler).Assembly }, Registrator.Interfaces, made: PropertiesAndFields.Auto);
IRequestHandler<PermissionedGetInformationRequest, DataIWantView>
напрямую? И после этого попытаться разрешить массивIRequestHandler<PermissionedGetInformationRequest, DataIWantView>[]
? - person dadhi   schedule 10.12.2020Rules.WithVariantGenericTypesInResolve()
. Попробуйте и посмотрите, исчезнет ли ошибка. - person dadhi   schedule 10.12.2020Rules.WithVariantGenericTypesInResolve()
в контейнер, но все еще не могу определить тип. попытка разрешитьIRequestHandler<PermissionedGetInformationRequest, DataIWantView>
просто выдает ошибку Нет службы для типа, попытка разрешить массив обработчиков просто возвращается как пустой массив - person Anduril   schedule 14.12.2020