2012-11-26 158 views
1

我想通過Ninject找出用DI設計MVC4應用程序的最佳方法。MVC條件依賴注入

當用戶訪問系統時,會向用戶顯示一個登錄名,他們可以從多個數據庫中選擇一個。每個數據庫都是數據庫服務器上的單獨目錄。我需要做的是在用戶登錄後爲數據庫連接詳細信息注入一個存儲庫。存儲庫的類型不會更改,只是連接詳細信息。

我發現了this我可以開展工作,但我不確定這是否適合我的情況。人們用什麼其他選擇取得成功?

+0

你需要注入另一個存儲庫,還是隻需要注入一個不同的數據庫連接/連接字符串? – Steven

+0

@Steven,我需要注入相同類型的存儲庫,但是需要注入相關數據庫的連接細節。 –

回答

0

問題已解決。由於我希望通過構造函數中的連接字符串我的具體資料庫,我可以使用下面的Ninject WithConstructorArgument:

IBindingWithOrOnSyntax<T> WithConstructorArgument(string name, Func<Ninject.Activation.IContext, object> callback); 

在這種超負荷的回調被調用每一個對象被創建的時間。所以我的代碼看起來像這樣,每次調用MakeConnectionString方法。

_Kernel = new StandardKernel(); 
_Kernel.Bind<ISomeItemRepository>().To<FakeSomeItemRepository>() 
    .WithConstructorArgument("connectionString", (c) => 
     { 
      MakeConnectionString(); 
     });