Что было бы правильным способом использования объекта во время настройки настройки Ninject/Topshelf/Quartz.Net?Доступ к объекту из Ninject при настройке приложения Topshelf и Quartz.Net console
Я создал 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 Спасибо за редактирование. Это выглядит лучше. Не думайте, что у вас есть простой пример инжектора, не так ли? Я не женат на Ниндеке; просто пытаясь узнать больше о IoC и DI. :) –