我有这样的代码在我的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