【发布时间】:2019-12-10 04:01:38
【问题描述】:
我有一个 Windows 服务,它使用Quartz 来安排任务。我正在尝试实现Dependency Injection,因为默认情况下Quartz不支持默认Job Factory。所以我必须创建一个自定义的Job Factory,如下所示。
var scheduler = await GetScheduler();
var serviceProvider = GetConfiguredServiceProvider();
scheduler.JobFactory = new CustomJobFactory(serviceProvider);
下面是我的GetConfiguredServiceProvider() 代码。
private IServiceProvider GetConfiguredServiceProvider() {
var services = new ServiceCollection()
.AddScoped<IDailyJob, DailyJob>()
.AddScoped<IWeeklyJob, WeeklyJob>()
.AddScoped<IMonthlyJob, MonthlyJob>()
.AddScoped<IHelperService, HelperService>();
return services.BuildServiceProvider();
}
但是在.AddScoped<IDailyJob, DailyJob>()线上我收到一个错误
严重性代码描述项目文件行抑制状态 错误 CS1061 'ServiceCollection' 不包含 'AddScoped' 并且没有可访问的扩展方法 'AddScoped' 接受 可以找到“ServiceCollection”类型的第一个参数(你是 缺少 using 指令或程序集 参考?)
还有其他人遇到过同样的问题吗?
【问题讨论】:
-
嗯,嗯,您是否缺少 using 指令或程序集引用?
-
我觉得应该有一个重复但我找不到一个,所以 +1(虽然是一个微不足道的修复)
-
是的,我一开始也想,后来找不到了。这就是我发布它的原因。谢谢
标签: c# dependency-injection windows-services quartz-scheduler service-provider