我正在努力學習Ninject,並開始使用我認爲非常簡單的事情。無法使其工作。顯然,我缺少一些基本的東西。連接字符串注入
因此,我有這個小控制檯應用程序,它監聽某個端口上的WCF調用,並將通過WCF傳來的數據保存到數據庫中。在解決方案中有3個項目:1.數據訪問庫,2. WCF的東西和3.控制檯充當主機。 Ninject尚未使用。所以項目之間的依賴關係是這樣的:3 - > 2 - > 1
我想開始注入控制檯主機從其配置到數據訪問庫的連接字符串。谷歌搜索連接字符串註銷帶來了一些例子,但他們不完整。
其中一個例子建議在主機的main()這樣的綁定:
static void Main(string[] args)
{
new StandardKernel().Bind<ConnectionStringProvider>().ToConstant(
new ConnectionStringProvider { ConnectionString = Config.ConnectionString });
}
其中ConnectionStrinProvider是隻包含一個屬性ConnectionString的一個簡單的類。我無法弄清楚的是如何在數據訪問庫中實例化ConnectionStrinProvider。我試圖
var csprovider = new StandardKernel().Get<ConnectionStringProvider>();
這是行不通的 - 這意味着它返回的供應商,而不是這是結合過程中創建的一個新的實例。我也嘗試將.InSingletonScope()添加到綁定中,結果相同。
你能否提供一個如何實現我的目標,而不會出錯的代碼示例?我迄今爲止看到的例子在Main中綁定了一些東西,並通過調用kernel.Get()來解析其他模塊中的依賴關係,而不用解釋內核變量來自哪裏。在控制檯應用程序中將它公開爲某個類的靜態成員將會創建從數據訪問庫到控制檯應用程序(1 - > 3)的依賴關係,在我看來,這將首先破壞使用Ninject的目的(這是減少耦合)。 – user1373607
我很高興提供一個更完整的示例,但是您能否詳細說明如何與數據訪問庫進行交互?你可以向我展示你在DAL中實例化/調用東西的代碼(通過編輯你的問題)嗎?另外,你可以提供更多的上下文(比如周圍的類)來獲得'ConnectionStringProvider'嗎? –