我正在编写自己的自定义配置部分,并在一个ConfigurationProperty中定义了一个ConfigurationElement,如下所示:
[ConfigurationProperty("startTime", IsRequired = false)]
[RegexStringValidator("\\d{2}:\\d{2}:\\d{2}")]
public string StartTime
{
get
{
return (string) this["startTime"];
}
set
{
this["startTime"] = value;
}
}我希望能够在我创建的startTime属性中输入诸如"23:30:00“之类的值。但是,每当我尝试加载我的配置部分时,我都会得到一个包含以下消息的ConfigurationErrorsException:
属性'startTime‘的值无效。错误是:该值不符合验证regex字符串'\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工作,将不胜感激。谢谢。
发布于 2011-03-15 14:29:13
尝试定义将通过验证的默认值:
[ConfigurationProperty("startTime", IsRequired = false, DefaultValue = "00:00:00")]
[RegexStringValidator(@"\d{2}:\d{2}:\d{2}")]
public string StartTime
{
get
{
return (string) this["startTime"];
}
set
{
this["startTime"] = value;
}
}发布于 2010-11-10 22:15:36
我不知道从属性的间接方向是否需要对内容进行双重转义。如果是,那么,而不是:
"\\d{2}:\\d{2}:\\d{2}"用途:
@"\\d{2}:\\d{2}:\\d{2}"通常,我会认为这是太多,但试试看。
https://stackoverflow.com/questions/4149398
复制相似问题