Autofac实例范围解析

时间:2014-08-21 18:25:51

标签: c# asp.net-web-api dependency-injection autofac

我有一个简单的命令架构,包含基本的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,如何注册服务以便在多个实例范围内解析它?

1 个答案:

答案 0 :(得分:1)

有关使用每个请求范围的相当详细的常见问题解答以及在Autofac doc网站上处理“混合”用例的方法:http://autofac.readthedocs.org/en/latest/faq/per-request-scope.html