Asp.net
使用自定義成員資格提供程序進行依賴注入
我有一個實現自定義成員資格提供程序的 ASP.NET MVC Web 應用程序。自定義成員資格提供程序接受
UserRepository其建構子,該建構子提供成員資格提供程序和 NHibernate 之間的介面。由UserRepositoryNinject IoC 容器提供。但是,顯然,當提供程序由 .NET 實例化時,這不起作用:無參數建構子沒有 UserRepository 並且無法創建一個(UserRepository 需要將 NHibernate 會話傳遞給它的建構子),這意味著提供程序無法訪問其數據儲存。如何解決我的對象依賴性?
可能值得注意的是,這是一個使用 Ninject 改造的現有應用程序。以前,我使用無參數建構子,它們能夠與有參數建構子一起創建所需的依賴項來協助單元測試。
有什麼想法,還是我在這裡把自己建在一個角落裡?
您可能希望保留使用 Ninject 初始化所需儲存庫的無參數建構子。您可能想要使用Common Service Locator,因此您既不需要引用 Ninject 也不需要它的自定義提供程序中的容器。似乎 Ninject 沒有針對 CSL 的官方適配器實現,但編寫一個應該不難(檢查其他實現,如 Windsor 的),我確信某處有一個非官方的實現。
Michael B. 的正確答案來自:Dependency injection and ASP.Net Membership Providers
您可以通過以下方式獲取您的儲存庫(或服務)注入:
public IRepository Repository { get { return DependencyResolver.Current.GetService(IRepository ); } }