关于c#:自定义ConfigurationElement中ConfigurationProperty中的意外RegexStringValidator失败

Unexpected RegexStringValidator failure in ConfigurationProperty in custom ConfigurationElement

我正在编写自己的自定义配置部分,并在这样的配置元素中定义了一个配置属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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"。但是,每当我尝试加载配置部分时,我都会收到一个配置错误异常消息:

0

我承认我一直在努力使用正则表达式,但这一个非常简单,我编写了一个测试来验证我的模式是否应该验证我期望的值类型:

1
2
var regex = new Regex(@"\d{2}:\d{2}:\d{2}", RegexOptions.Compiled);
var isSuccess = regex.Match("23:30:00").Success;

issueaccess的计算结果为true,因此我不太确定为什么要抛出configurationErrorException。

作为参考,这里是我的app.config文件中的配置部分:

2

对于我为什么不能让regexstringvalidator工作的任何帮助都将不胜感激。谢谢。


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

2


我想知道属性的间接性是否需要对内容进行双重转义。如果是,则不是:

1
"\\d{2}:\\d{2}:\\d{2}"

用途:

1
@"\\d{2}:\\d{2}:\\d{2}"

通常我会认为这太多了,但试一下。