2016-04-16 5 views
2

Что было бы правильным способом использования объекта во время настройки настройки 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; 
     } 
    } 
} 

Любая помощь/предложения будут оценены.

+0

@Steven Спасибо за редактирование. Это выглядит лучше. Не думайте, что у вас есть простой пример инжектора, не так ли? Я не женат на Ниндеке; просто пытаясь узнать больше о IoC и DI. :) –

ответ

4

Я считаю, что вы можете получить доступ к ядру с помощью NinjectBuilderConfigurator:

var config = NinjectBuilderConfigurator.Kernel.Get<IConfiguration>(); 
+0

Большое спасибо @ Kate. Я думаю, что это был тот самый бит, который мне не хватало. Извините за поздний ответ. –