2009-09-15 100 views
4

我正在爲我的第一個SubSonic 3應用程序(在ASP.NET MVC 1.0前端)進行佈線,並且正在查看Rob的SimpleRepository。我使用Castle.Windsor作爲注入框架。如何通過使用Castle.Windsor的依賴注入傳遞構造函數參數?

在我的應用程序啓動時,我將Castle配置爲將SubSonic SimpleRepository綁定到SubSonic IRepository。沒有什麼複雜的。但是,SimpleRepository具有ctor重載,它有兩個值:連接字符串名稱和一組SimpleRepositoryOptions。過去沒有深入挖掘Castle,現在還不清楚是否有方法通過配置(或其他方法)指定ctor參數。

現在,我有一個SimpleRepository的自定義實現,它明確地創建了一個SimpleRepository,並在它的無參數ctor中使用這些參數,但是如果我想在任何時候更改這些參數,它需要更改代碼並重新編譯。

有沒有一種更優雅的方式來配置城堡採取構造參數?

回答

4

參見this wiki page。該頁面上的所謂「參數」是構造函數參數(這是必需參數)或屬性(可選參數)

+0

這種聯繫已經死了,我找不到它移到 - 似乎他們有一些網站錯誤馬上。如果您包含一個工作示例或相關摘錄,它會更有幫助。 – mskfisher 2011-11-02 16:00:35

+0

@mskfisher:這些年來事情發生了變化。更新的鏈接。 – 2011-11-02 16:12:59

+0

感謝您更新鏈接。你還可以添加一個例子,以防鏈路再次死亡嗎? – mskfisher 2011-11-02 16:20:14

5

如果您使用XML文件配置Windsor,則需要定義ctor參數及其值像這樣:

 
<component id="repository" service="IRepository" type="SimpleRepository" ...> 
    &ltparameters> 
     <connectionString>your connection string</connectionString> 
     ... 
    </parameters> 
</component> 

詳情參見溫莎配置參考:

http://www.castleproject.org/container/documentation/v1rc3/manual/windsorconfigref.html

+0

+1提供了一個例子。 – mskfisher 2011-11-02 16:01:08

+0

@mskfisher:XML註冊已經過時了。 – 2011-11-02 16:11:12

相關問題