我在爲使用Ninject用asp.net mvc的關於如何處理文檔提供.NET衆多通過谷歌做損失4在ASP.NET MVC使用Ninject當控制器工廠neccessary 4
首先,我想知道控制器工廠是否需要在asp.net中。
還有,就是構造函數注入真是我們所能做的依賴注入MVC 4,因爲財產注入和方法注入似乎並不當我使用他們與我的控制器
我在爲使用Ninject用asp.net mvc的關於如何處理文檔提供.NET衆多通過谷歌做損失4在ASP.NET MVC使用Ninject當控制器工廠neccessary 4
首先,我想知道控制器工廠是否需要在asp.net中。
還有,就是構造函數注入真是我們所能做的依賴注入MVC 4,因爲財產注入和方法注入似乎並不當我使用他們與我的控制器
我不是Ninject
的專家一起工作的唯一途徑但據我所知,我只用它將我的DataSource Interface
和我的EfDb Class
鏈接到我的應用程序的其餘部分。
如果你需要有大約Ninject
嘗試建立一個真正的應用程序一本好書: Pro ASP.NET MVC 3 Framework, Third Edition
或
有代碼非常幾行我通常關心
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? null
: (IController) ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
ninjectKernel.Bind<IDataSource>().To<EfDb>();
}
}
然後註冊您的NinjectControllerFactory
在Global.asax.cs
有:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
正如你所看到的,這個類使用Method Injection
使用private void AddBindings()
。這使得它非常容易,如果你是以下Test Driven Development (TDD)
在這裏看到的文檔: https://github.com/ninject/ninject.web.mvc/wiki/Dependency-injection-for-controllers「,即必須做的唯一一件事就是配置Ninject綁定其依賴控制器本身將Ninject發現即使而無需添加綁定。「
NInject會自動設置您的控制器依賴關係(假設它具有這些類型的綁定)。
我正在使用MVC5/WebApi2,並且此方法對我無效。 @Komengem的建議奏效了。 – codeMonkey 2017-02-09 07:43:17
但是我讀了一些地方,如果你的應用程序繼承自NinjectHttpApplication並重寫適當的方法,控制器將通過IOC容器自動地具有依賴關係statisfied。 – 2013-03-11 15:54:53
@PeterEdike每個人都有他們自己的編寫代碼的方式,這個遊戲全部是關於拾取一種可以工作並在路上改進的風格。我建議你閱讀我提到的那些書之一。 – Komengem 2013-03-11 19:20:15
是的,我已經得到了這本書。我現在正在閱讀它 – 2013-03-12 16:13:28