我有這樣的代碼在我的Ninject的bootstap:無法使用DependencyResolver與ninject一起使用?
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
RegisterServices(kernel);
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
return kernel;
}
private static void RegisterServices(IKernel kernel)
{
//TODO: Enregistrer les services ici.. pour ninject!
kernel.Bind<IContext>().To<MySampleContext>();
kernel.Bind<ISampleService>().To<SampleService>();
}
在我的世界我嘗試這個..
protected virtual void Application_BeginRequest()
{
ContextProvider cp = new ContextProvider();
DbContext context = (DbContext)DependencyResolver.Current.GetService<IContext>();
cp.SetCurrent(context);
}
編輯:這裏的全部引導程序......但其基本一ninjectt附帶。
public static class NinjectMVC3
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
DynamicModuleUtility.RegisterModule(typeof(HttpApplicationInitializationModule));
bootstrapper.Initialize(CreateKernel);
}
public static void Stop()
{
bootstrapper.ShutDown();
}
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
RegisterServices(kernel);
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
return kernel;
}
private static void RegisterServices(IKernel kernel)
{
//TODO: Enregistrer les services ici.. pour ninject!
kernel.Bind<IContext>().To<MySampleContext>();
kernel.Bind<ISampleService>().To<SampleService>();
}
}
但它返回NULL?爲什麼?
你需要顯示的代碼爲你的「引導程序」還有,你在app_start調用此? – Paul
我仔細查看了調試過程,所有內容都毫無例外地被調用。所以bootstrapper的工作原理和每個人都是。我試圖做的是讓系統提供一個IContext實例,例如MySampleContext .. – Rushino
@RubenBartelink:我沒有Ninject的問題,你是對的。我老實說晚了,只是很累,不應該發表任何評論。 – Paul