首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义RegexStringValidator中ConfigurationProperty中的意外ConfigurationElement失败

自定义RegexStringValidator中ConfigurationProperty中的意外ConfigurationElement失败
EN

Stack Overflow用户
提问于 2010-11-10 21:45:10
回答 2查看 3K关注 0票数 7

我正在编写自己的自定义配置部分,并在一个ConfigurationProperty中定义了一个ConfigurationElement,如下所示:

代码语言:javascript
复制
[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}‘。

我承认,我总是在正则表达式中挣扎,但是这个非常简单,我编写了一个测试来验证我的模式应该验证我所期望的值的类型:

代码语言:javascript
复制
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文件中的配置部分:

代码语言:javascript
复制
<windowsServiceConfiguration>
  <schedule startTime = "23:00:00" />
</windowsServiceConfiguration>

任何帮助,为什么我不能让RegexStringValidator工作,将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-15 14:29:13

尝试定义将通过验证的默认值:

代码语言:javascript
复制
[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;
    }
}
票数 16
EN

Stack Overflow用户

发布于 2010-11-10 22:15:36

我不知道从属性的间接方向是否需要对内容进行双重转义。如果是,那么,而不是:

代码语言:javascript
复制
"\\d{2}:\\d{2}:\\d{2}"

用途:

代码语言:javascript
复制
@"\\d{2}:\\d{2}:\\d{2}"

通常,我会认为这是太多,但试试看。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4149398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档