我的班级正在等待接口,但我需要通过 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上下文,因此我无法注入此依赖项。
这应该是一个愚蠢的问题,但我无法解决。