【发布时间】:2016-08-08 18:29:39
【问题描述】:
在配置 Ninject/Topshelf/Quartz.Net 设置期间使用对象的正确方法是什么?
我创建了一个IocModule 来将我的接口绑定到一个具体的类:
public class IocModule : NinjectModule
{
public override void Load()
{
Bind<IConfiguration>().To<JsonConfiguration>().InSingletonScope();
}
}
在运行时间的 Quartz.Net 设置期间,我需要此配置中的一些值,但使用 IConfiguration configuration = new JsonConfiguration(); 似乎不是正确的方法:
namespace Question {
public class Program {
public static int Main(string[] args) {
var exitCode = HostFactory.Run(c => {
c.UseNinject(new IocModule());
// How can I get this from Ninject?
IConfiguration configuration = new JsonConfiguration();
configuration.Load();
c.Service<Service>(sc => {
sc.ConstructUsingNinject();
sc.WhenStarted((service, control) => service.Start(control));
sc.WhenStopped((service, control) => service.Stop(control));
sc.UseQuartzNinject();
sc.ScheduleQuartzJob(q => q.WithJob(() =>
JobBuilder.Create<IvansLauncher>().Build())
.AddTrigger(() =>
TriggerBuilder.Create()
.StartNow()
.WithSchedule(CronScheduleBuilder
.MonthlyOnDayAndHourAndMinute(
configuration.DayToRun,
configuration.HourToRun,
configuration.MinuteToRun))
.Build()));
});
c.EnablePauseAndContinue();
c.EnableShutdown();
c.StartAutomaticallyDelayed();
c.RunAsLocalSystem();
});
return (int) exitCode;
}
}
}
任何帮助/建议将不胜感激。
【问题讨论】:
-
@Steven 感谢您的编辑。那看起来确实更好。不要假设您有一个简单的注射器示例,是吗?我没有和 Ninject 结婚;只是想了解更多关于 IoC 和 DI 的信息。 :)
标签: c# scheduled-tasks ninject quartz.net topshelf