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实例范围解析

在Autofac文档网站上有一个相当详细的关于处理每个请求范围和处理"混合"用例的方法的常见问题解答:http://autofac.readthedocs.org/en/latest/faq/per-request-scope.html