2010-03-31 85 views

回答

6

原來,它更容易,並且可能更多正確,以添加一個構造函數,該構造函數不接受要保留空白的參數。

2
container.Register(
    Component.For<Foo>() 
     .DependsOn(new 
     { 
     someString = string.Empty 
     })); 

但首先,你爲什麼要設置這種依賴於空字符串?它確實感覺像對我進行黑客攻擊。

+0

我正在輸入一個原因,爲什麼我只想實現這個功能,我只是想添加另一個構造函數,它排除了我想留下空的參數... +1給我打電話給黑客。 – 2010-03-31 19:23:03

+0

是的,額外的.ctor明確排除參數通常是首選的解決方案。 – 2010-04-01 14:30:48

0

如果已經有一個默認值,即null或其他非空字符串,該怎麼辦?一種解決方案是創建一個組件:

<component id="emptyString" type="System.String, mscorlib" />

,然後在參數節點使用它:

<parameters> <someStringParameter>${emptyString}</someStringParameter> </parameters>

但好像就必須有一個簡單的方法。

+0

不起作用。你不能使用'string'作爲組件。這是沒有道理的,溫莎不會讓你。 – 2010-07-07 21:56:10

+0

你爲什麼說這不起作用?在我發佈之前,我做了它,並且構造函數中的相關參數值確實是空字符串。它依賴於版本嗎?我使用Castle.Core 1.2.0.0,Castle.MicroKernel 2.1.0.0,Castle Windsor 2.1.0.0。 此外,更重要的是,如果它沒有意義,那麼更好的解決方案是什麼? 謝謝。 – phoog 2010-07-12 15:55:26

相關問題