我正在尝试在 .NET Framework 4.6.2 中使用 Autofac 运行 MediatR。
我的注册:
public class MediatorModule : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterSource(new ContravariantRegistrationSource());
builder.RegisterAssemblyTypes(typeof(IMediator ).Assembly).AsImplementedInterfaces();
builder.RegisterType<HealthCheckQueryHandler>().As<IRequestHandler<HealthCheckQuery, HttpStatusCode>>();
}
}
我的控制器:
[RoutePrefix("api/v1/healthcheck")]
public class HealthCheckController : ApiController
{
private readonly IMediator _mediator;
public HealthCheckController(IMediator mediator)
{
_mediator = mediator;
}
[HttpGet]
[Route("")]
public async Task<HttpStatusCode> Get()
{
var query = new HealthCheckQuery();
var result = await _mediator.Send(query);
return result;
}
}
当我尝试使用此 api 方法时,我收到以下错误:在类型 'MediatR.Mediator' 上找到的具有 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' 的构造函数都不能使用可用的服务和参数调用:\ r\n无法解析构造函数“Void .ctor(MediatR.ServiceFactory)”的参数“MediatR.ServiceFactory serviceFactory”
wiki ( https://github.com/jbogard/MediatR/wiki ) 要求我们注册 SingleInstanceFactory 和 MultiInstanceFactory。但 Visual Studio 无法解析这些符号中的任何一个。
如何解决此问题以使 MediatR 与 Autofac 一起使用?