這個讓我很生氣。我已經閱讀了Ninject文檔,我已經閱讀了Ninject MVC擴展的文檔,我已經讀了很多相關的SO問題,並且我不知道問題出在哪裏。在整合Ninject時遇到困難
我正在ASP.NET MVC 4中構建一個web應用程序,並且我正在使用Ninject來綁定存儲庫接口。該文檔說,如果你使用NuGet(我做過)添加Ninject,那麼它會爲你提供一切,因此你不需要從NinjectHttpApplication
繼承你的應用程序(所以我沒有),你只需要添加你的在NinjectWebCommon.RegisterServices()
,(我有)綁定。我有一個IRepository<T>
和一個Repository<T>
。用戶存儲庫有一些額外的登錄和註冊方法,因此有一個單獨的UserRepository
,它實現了IRepository<User>
。因此,我的綁定是這樣的:
kernel.Bind(typeof(IRepository<>)).To(typeof(BaseRepository<>)).InRequestScope();
kernel.Bind(typeof(IRepository<User>)).To(typeof(UserRepository)).InRequestScope();
的文檔,和一對夫婦的SO問題,還提到,如果添加了Ninject不過的NuGet(我做到了),那麼它挑選出你和你不控制器工廠不需要實施你自己的Ninject-y控制器工廠(所以我沒有)。我的控制器繼承自BaseController
,它有一個構造函數,它接受一組與IRepository
兼容的存儲庫。現在,從我讀過的內容來看,當我嘗試使用控制器時,Ninject應該識別IRepositoriy
參數並提供它們。它沒有。即使我將[Inject]
屬性放在構造函數上,它仍然會被忽略 - 而不是無參數的構造函數。如果我刪除了無參數的構造函數,我得到一個編譯錯誤,抱怨沒有一個。
我錯過了什麼?我如何讓Ninject提供我的知識庫?
呵呵。我只是剛開始這個項目,所以我開始懷疑剛開始時是否會減少工作量...... – anaximander 2013-03-17 14:20:48
是的,重新開始。我花了不到一分鐘爲你嘲笑這個樣本。 – 2013-03-17 14:22:06
好吧..不知道這是否是一個「解決方案」,考慮到問題在某種程度上不存在,但它在一個很好的簡潔的文章中解釋了我必須從模糊和/或奇怪的文檔拼湊起來的過程,所以你得到接受:P – anaximander 2013-03-17 15:36:41