이 코드는 Ninject의 부트 스탭에 있습니다 :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);
}
EDIT : 여기서 전체 부트 스트 래퍼 ... 그러나 기본적인 것 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을 반환합니까? 왜 ?
당신은, 또한 당신의 "부트 스트 래퍼"에 대한 코드를 표시하는 데 필요한 문서를 읽어? – Paul
Ive는 디버깅을 통해 보았고 모든 것이 예외없이 호출되었습니다. 그래서 부트 스트 래퍼가 작동합니다. 내가하려고하는 것은 시스템이 MySampleContext와 같은 IContext 인스턴스를 공급자에게 제공하도록하는 것이다. – Rushino
@RubenBartelink : 나는 Ninject에 문제가 없으며 당신이 옳다. 나는 솔직히 늦게까지 피곤하고, 어떤 말도하지 말았어야했다. – Paul