2010-04-07 70 views
1

我想注入一個連接字符串到我的資源庫,但理想情況下,我想這個連接字符串在我的web.config connectionStrings部分,而不是在我的windsor配置。這可能嗎?城堡溫莎配置指向web.config中的connectionStrings部分

我知道我可以使用流暢的界面,並實現這一點很容易,但我的老闆想要一個XML配置文件。

我也知道我可以定義一個屬性,並在我的windsor配置中使用該屬性來傳遞參數,但是我有其他代碼直接從web.config讀取連接字符串,並且不需要兩個地方相同的connectionString。

回答

1

有幾種方法可以做到這一點:

  • This question有一個解決方案,非常類似於你要
  • 你可以標記需要ConnectionString中,像這樣的接口的類:

    interface IRequiresConnectionString { 
        string ConnectionString {get;set;} 
    } 
    

    然後您訂閱事件container.Kernel.ComponentModelCreated(或寫入IContributeComponentModelConstruction),檢查組件實現類型,並檢查它是否實現了IReq uiresConnectionString將connectionString放入組件的參數中。

  • 如果遵循約定connectiontring參數總是被稱爲connectionString(或任何你喜歡的),但是這是容易出錯的,如果你不小心命名參數conectionString它不會得到注射。
+0

我實際上使用'IContributeComponentModelConstruction'和約定來命名參數'connectionString'並編寫一個單元測試來驗證我沒有把那個搞砸了:) – 2010-04-07 15:13:00