我有一个 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);