2009-08-02 39 views
2

我是一個初學者使用城堡windsor;並有點介紹它與Apress Pro Mvc書。在我正在工作的項目中;我使用castlewindsor控制器工廠代替mvc控制器工廠;所以我可以有參數化的構造函數,我可以注入依賴關係。 有沒有辦法告訴windsorcontroller工廠無需通過構造函數就可以將值注入控制器類的屬性? 我想這樣做的原因是因爲我有Logging依賴; Emailler依賴;數據庫依賴性;主題引擎dEpendency;我不想在構造函數中使用這個參數。CastleWindsor也填寫班級字段

回答

2

默認情況下,當Windsor解析服務實現時,它將使用它可以滿足的公共setter填充所有屬性。

但是,需要注意的是,有時將依賴解析放入構造函數中是有意義的,因爲它確保了任何實例始終處於有效狀態。考慮單元測試場景,寫測試的人會爲了知道應該提供哪些依賴性而需要瘋狂。當所有依賴進入c'tor時,測試者將別無選擇,只能爲測試實例提供所有必需的依賴關係(如存根或模擬)。

無論如何,對於你的問題,溫莎支持C'tor 財產注入默認

+0

如果它不填充屬性,但構造函數;我應該在哪裏看? – user149383 2009-08-02 21:07:06

1

溫莎城堡將自動它知道如何填寫公衆制定者填寫任何屬性。

這意味着,如果你有一個類

public MyClass { 
    public SomeDependency {get; set;} 
} 

只要容器被配置爲知道如何解決SomeDependency它會嘗試解決,並注入它。

有時候我發現這個默認行爲很麻煩。 This facility會給你更好的粒度控制過程。