我寫我自己的自定義配置部分,並有一個的ConfigurationElement定義的,就像這樣的ConfigurationProperty:意外RegexStringValidator衰竭定製的ConfigurationElement
[ConfigurationProperty("startTime", IsRequired = false)]
[RegexStringValidator("\\d{2}:\\d{2}:\\d{2}")]
public string StartTime
{
get
{
return (string) this["startTime"];
}
set
{
this["startTime"] = value;
}
}
我期待着能夠進入的值,如「23 :30:00「在我創建的ConfigurationElement的startTime屬性中。但是,每當我嘗試加載我的配置節時,我都會收到ConfigurationErrorsException消息:
屬性'startTime'的值無效。錯誤是:該值不符合驗證正則表達式字符串'\ d {2}:\ d {2}:\ d {2}'。
我承認我總是用正則表達式的鬥爭,但是這是一個很簡單,我寫了一個測試,以驗證我的模式應該驗證類型的值,我期待:
var regex = new Regex(@"\d{2}:\d{2}:\d{2}", RegexOptions.Compiled);
var isSuccess = regex.Match("23:30:00").Success;
isSuccess的計算結果爲True,所以我不太確定爲什麼會拋出ConfigurationErrorsException。
作爲參考,這裏是從我的App.config文件我的配置部分:
<windowsServiceConfiguration>
<schedule startTime = "23:00:00" />
</windowsServiceConfiguration>
任何幫助,爲什麼我不能得到RegexStringValidator工作,將不勝感激。謝謝。
其實,我似乎有與一般的驗證問題。我與TimeSpanValidator有類似的問題。我裝飾一個屬性並設置一個範圍。配置文件中的值肯定在範圍內,我得到一個異常,說我的值超出範圍。 – Jed 2010-11-10 23:40:16