如何允許我的一個字符串參數爲空字符串?Castle Windsor:將參數值設置爲空字符串
我得到這個錯誤,當我嘗試要麼沒有或一個空格(名稱變更):
無法解析「test.User」(MyNamespace.MyObject)無可選依賴。參數「用戶名」類型「System.String」
如何允許我的一個字符串參數爲空字符串?Castle Windsor:將參數值設置爲空字符串
我得到這個錯誤,當我嘗試要麼沒有或一個空格(名稱變更):
無法解析「test.User」(MyNamespace.MyObject)無可選依賴。參數「用戶名」類型「System.String」
原來,它更容易,並且可能更多正確,以添加一個構造函數,該構造函數不接受要保留空白的參數。
container.Register(
Component.For<Foo>()
.DependsOn(new
{
someString = string.Empty
}));
但首先,你爲什麼要設置這種依賴於空字符串?它確實感覺像對我進行黑客攻擊。
如果已經有一個默認值,即null或其他非空字符串,該怎麼辦?一種解決方案是創建一個組件:
<component id="emptyString" type="System.String, mscorlib" />
,然後在參數節點使用它:
<parameters> <someStringParameter>${emptyString}</someStringParameter> </parameters>
但好像就必須有一個簡單的方法。
不起作用。你不能使用'string'作爲組件。這是沒有道理的,溫莎不會讓你。 – 2010-07-07 21:56:10
你爲什麼說這不起作用?在我發佈之前,我做了它,並且構造函數中的相關參數值確實是空字符串。它依賴於版本嗎?我使用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
我正在輸入一個原因,爲什麼我只想實現這個功能,我只是想添加另一個構造函數,它排除了我想留下空的參數... +1給我打電話給黑客。 – 2010-03-31 19:23:03
是的,額外的.ctor明確排除參數通常是首選的解決方案。 – 2010-04-01 14:30:48