【发布时间】:2019-07-12 14:08:09
【问题描述】:
我正在使用 Mediatr 处理来自队列的消息。我可以得到一个简单的例子来工作。但是,当我尝试将对象注入处理程序时遇到了问题
public class MessageCommandHandler : IRequestHandler<MessageCommand, bool>
{
private IMyDependency myDependency;
public MessageCommandHandler(IMyDependency myDependency)
{
this.myDependency = myDependency;
}
public Task<bool> Handle(MessageCommand request, CancellationToken cancellationToken)
{
return Task.FromResult(true);
}
}
这仅在我将 IMyDependency 注册为瞬态作用域时有效,但是当我将其注册为作用域生命周期时,它会失败并出现错误
Cannot resolve 'MediatR.IRequestHandler`2[MyNamespace.MessageCommand,System.Boolean]' from root provider because it requires scoped service 'MyNamespace.IMyDependency'
我需要能够注入具有作用域生命周期的依赖项。有没有人解决这个问题。
我正在使用 .NET Core 依赖注入框架。设置如下
services.AddHostedService<QueueConsumer>();
services.AddScoped<IMyDependency, MyDependency>();
services.AddMediatR(new Assembly[] { Assembly.GetExecutingAssembly() });
有什么想法吗?
【问题讨论】:
标签: asp.net-core dependency-injection mediatr lifetime-scoping