0

我有三個將使用DI的項目。我的項目是一個ASP.NET MVC 3網站。我從nuget安裝了ninject MVC軟件包,添加了我的引導程序。我註冊了我的綁定。ASP.NET MVC中的Ninject注入問題3

NinjectMVC3.cs

 private static void RegisterServices(IKernel kernel) 
     { 
      kernel.Bind<IUserService>().To<UserService>(); 
     } 

我有一個包含UserService和IUserService一個單獨的項目。在那個項目中,我也有一個單獨的工廠類來創建我的服務。

public class ServiceFactory : BaseFactory<ServiceFactory> 
    { 
     [Inject] 
     public IUserService UserService { get; set; } 
    } 

當我調用ServiceFactory.Instance.UserService時,上述情況總是爲空嗎?

回答

2

猜測:很可能工廠不是由Ninject創建的。

但是,因爲在做依賴注入時不應該使用Singleton模式,所以這應該很容易解決。

  1. IUserService傳遞給需要知道它的任何對象的構造函數。
  2. 綁定它作爲單件kernel.Bind<IUserService>().To<UserService>().InSingletonScope();
+0

嗯,我切換到做此鏈接http://www.shahnawazk.com/2010/12/dependency-injection-in-aspnet-mvc-3.html和我還是我得到一個null。內核設置被擊中。另外我可能在一個控制器上有多個服務,並且會討厭在裏面有5或6個參數。我寧願做財產注入。 –

+0

我有點困惑。該鏈接無處推薦使用單例模式。另外,如果你的構造函數有很多依賴關係,這很可能不是構造函數注入的問題,而是你沒有正確地遵循單一責任原則。 –

+0

此外,我成功地使用https://github.com/ninject/ninject.web.mvc/wiki/MVC3作爲Ninject的MVC引導程序 –