默認值每當我嘗試設置可選參數,以在資源文件的東西的默認值,我得到設置的C#可選參數
默認參數值的'編譯時錯誤消息'必須是編譯時常量。
有什麼辦法可以改變資源文件的工作方式嗎?
public void ValidationError(string fieldName,
string message = ValidationMessages.ContactNotFound)
在此,ValidationMessages
是一個資源文件。
默認值每當我嘗試設置可選參數,以在資源文件的東西的默認值,我得到設置的C#可選參數
默認參數值的'編譯時錯誤消息'必須是編譯時常量。
有什麼辦法可以改變資源文件的工作方式嗎?
public void ValidationError(string fieldName,
string message = ValidationMessages.ContactNotFound)
在此,ValidationMessages
是一個資源文件。
不,您將無法使資源直接在默認狀態下工作。你需要做的是將默認值設置爲null,然後在參數在方法體中具有默認值時執行資源查找。
這就是我所害怕的。我非常喜歡它的開發時間方便性,它告訴開發者字符串是什麼:我意識到我所要求的(編譯資源文件)會導致部分原因它存在,但我用它不是用於本地化和動態更改,而是用作重用字符串的常用存儲。 – Jaxidian 2010-04-28 13:16:38
但當然! Thanx爲這個答案 – 2012-03-16 13:25:58
,但一些默認值是不可空的像'int'。你怎麼處理那件事呢? – 2013-09-12 03:34:50
一種選擇是使默認值null
,然後填充該適當:
public void ValidationError(string fieldName, string message = null)
{
string realMessage = message ?? ValidationMessages.ContactNotFound;
...
}
當然,這僅適用,如果你不希望允許null
作爲一個真正的價值。
另一個潛在的選擇是預先構建一個步驟,該步驟根據資源創建一個包含const
字符串的文件;然後你可以引用這些常量。這將是相當尷尬的,但。
這就是我所害怕的。我非常喜歡它的開發時間方便性,它告訴開發者字符串是什麼:我意識到我所要求的(編譯資源文件)會導致部分原因它存在,但我用它不是用於本地化和動態更改,而是用作重用字符串的常用存儲。 – Jaxidian 2010-04-28 13:17:10
另一種選擇是你的方法一分爲二,並有一個過載撥打對方,就像這樣:
public void ValidationError(string fieldName)
{
ValidationError(fieldName, ValidationMessages.ContactNotFound);
}
public void ValidationError(string fieldName, string message)
{
...
}
這種方式,您還可以通過null
作爲案例message
一個值,也是該參數的有效值。
@Joel:謝謝!那次選旗者有點棘手,我沒有意識到我有點瘋狂。 :-) – Jaxidian 2010-04-28 13:12:33