我正在使用 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() });
有任何想法吗?
_serviceScopeFactory
应该是readonly
。不过回答很好。 - Eric J.