Autofac实例范围解析
本文关键字:范围 实例 Autofac | 更新日期: 2023-09-27 18:18:57
我有一个简单的命令架构与你的基本CommandBus, CommandHandlers,这是我的命令总线的简化版本。
public class CommandBus : ICommandBus
{
private readonly ICommandHandlerFactory _commandHandlerFactory;
public CommandBus(ICommandHandlerFactory commandHandlerFactory)
{
this._commandHandlerFactory = commandHandlerFactory;
}
public CommandSummary Send<T>(T command) where T : ICommand
{
try
{
var handler = _commandHandlerFactory.GetHandler<T>();
handler.Handle(command);
}
catch (Exception e)
{
return CommandSummary.Fail(e.Message, command);
}
return CommandSummary.Success(command, message: command.Message);
}
}
我想添加的是在后台执行命令的能力,或者为以后的时间调度命令。我正在使用相对较新的库HangFire(还没有SO标签),用于后台作业调度。
我使用InstancePerApiRequest范围注册了很多服务,当你在后台运行作业时,或者在以后的时间,它不再是该范围的一部分。
使用Autofac,如何注册一个服务,以便它可以在多个实例作用域下解析?
在Autofac文档网站上有一个相当详细的关于处理每个请求范围和处理"混合"用例的方法的常见问题解答:http://autofac.readthedocs.org/en/latest/faq/per-request-scope.html