没有Http上下文的C#AutoFac注入(外部控制器)

时间:2018-08-10 17:15:26

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

我的班级正在等待接口,但我需要通过 Application_Start 中的作业初始化班级。

protected void Application_Start()
{
    Bootstrapper.Run();
    JobScheduler.RunJobSchedule();
}

在Bootstrap.Run()上,我有容器构建器。喜欢:

 private static void SetAutofacContainer()
        {
            var builder = new ContainerBuilder();
            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest();
            builder.RegisterType<DbFactory>().As<IDbFactory>().InstancePerRequest();

    builder.RegisterAssemblyTypes(typeof(DashboardService).Assembly)
     .Where(t => t.Name.EndsWith("Service"))
     .AsImplementedInterfaces().InstancePerRequest();

 IContainer container = builder.Build();


            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}

在JobScheduler.RunJobSchedule()上;我将初始化我的工作。

我的工作需要使用 IDashboardService

实例化 DashboardHelper 类。
 public class DashboardHelper
    {

        public IDashboardService dashboardService { get; }

        public DashboardHelper(IDashboardService dashboardService)
        {
            this.dashboardService = dashboardService;
        }
   }

我的工作类别:

public class ReportWeeklySenderJob : IJob
    {        
        public IDashboardService dashboardService { get; set; }

        public async Task Execute(IJobExecutionContext context)
        {
            this.dashboardService.Mymethods();

        }
    }

但是由于尚未创建 http上下文,因此我无法注入此依赖项。

这应该是一个愚蠢的问题,但我无法解决。

0 个答案:

没有答案