我需要在我的應用程序啓動時調用某些東西來啓動我的quartz.net調度程序。我該怎麼做?我需要調用一個服務類,但我需要傳遞參數
問題是我需要將存儲庫傳遞到我的服務層,通常是使用ninject和依賴注入完成的。
//global.aspx
public class MvcApplication : System.Web.HttpApplication
{
private readonly IScheduledRemindersService scheduledRemindersService;
public MvcApplication(IScheduledRemindersService
scheduledRemindersService)
{
this.scheduledRemindersService = scheduledRemindersService;
}
protected void Application_Start()
{
//other default stuff here like mvc routers.
scheduledRemindersService.RemindersSchedule();
}
}
private readonly IReminderRepo reminderRepo;
public ScheduledRemindersService(IReminderRepo reminderRepo)
{
this.reminderRepo = reminderRepo;
}
private readonly IReminderRepo reminderRepo;
public ScheduledRemindersService(IReminderRepo reminderRepo)
{
this.reminderRepo = reminderRepo;
}
我已經NHibernate的設置,所以當它似乎IReminderRepo它shoudl結合它在IReminderRepo我有
private readonly ISession session;
public ReminderRepo(ISession session)
{
this.session = session;
}
這也將通過NHibernate的都會自動綁定。
雖然global.aspx只允許沒有參數構造函數,但這不起作用。
那麼如何向這些接口注入正確的類? 尤其是nhibernate session這是我需要的最重要的東西。
編輯
public class NhibernateSessionFactoryProvider : Provider<ISessionFactory>
{
protected override ISessionFactory CreateInstance(IContext context)
{
var sessionFactory = new NhibernateSessionFactory();
return sessionFactory.GetSessionFactory();
}
}
public class NhibernateModule : NinjectModule
{
public override void Load()
{
Bind<ISessionFactory>().ToProvider<NhibernateSessionFactoryProvider>().InSingletonScope();
Bind<ISession>().ToMethod(context => context.Kernel.Get<ISessionFactory>().OpenSession()).InRequestScope();
}
}
//在global.aspx
protected IKernel CreateKernel()
{
var modules = new INinjectModule[]
{
new NhibernateModule(),
new ServiceModule(),
new RepoModule(),
};
return new StandardKernel(modules);
}
//在RepoModule()
Bind<IReminderRepo>().To<ReminderRepo>();
//在serviceModule
Bind<IScheduledRemindersService>().To<ScheduledRemindersService>()
我有一個會話工廠,它提供了通過ninjects生命週期進行管理的會話。會話工廠貫穿於我的應用程序的生命週期,每個Web請求都會獲得它自己的會話,並在Web請求結束時結束。 – chobo2 2011-05-15 20:46:54
@civista - 我更新了我的帖子。基本上我只是打電話給我的服務層 - >這需要我的回購 - >有一個會議。這一切都有效,我沒有任何直接參考IoC。 – chobo2 2011-05-15 20:53:51
我使用城堡WCF工具來獲取我的WCF服務和城堡石英集成上的IoC,以便在我的石英作業上獲得IoC – iwayneo 2011-05-16 06:19:23