gpt4 book ai didi

autofac - 无法解析参数 'MediatR.ServiceFactory serviceFactory'(带有 Autofac 的 MediatR)

转载 作者:行者123 更新时间:2023-12-05 00:40:18 26 4
gpt4 key购买 nike

我正在尝试在 .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>>();
}
}

我的 Controller :

[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”的参数“MediatR.ServiceFactory serviceFactory” .ctor(MediatR.ServiceFactory)

wiki (https://github.com/jbogard/MediatR/wiki) 要求我们注册 SingleInstanceFactory 和 MultiInstanceFactory。但 Visual Studio 无法解析这些符号中的任何一个。

如何解决此问题以使 MediatR 与 Autofac 一起使用?

最佳答案

我知道这是一篇旧帖子,但万一其他人用谷歌搜索这个。

您缺少注册 ServiceFactory 实例。

builder.Register<ServiceFactory>(ctx =>
{
var c = ctx.Resolve<IComponentContext>();
return t => c.Resolve(t);
});

取自这里:MediatR Examples

关于autofac - 无法解析参数 'MediatR.ServiceFactory serviceFactory'(带有 Autofac 的 MediatR),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50741727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com