Почему ConfigurationValidator проверяет значение по умолчанию значение ConfigurationProperty, даже если IsRequired истинно?

Допустим, у меня есть свойство конфигурации, которое выглядит следующим образом. Обратите внимание, что значения по умолчанию нет.

[ConfigurationProperty("x", IsRequired = true)]
[StringValidator(MinLength = 1)]
public string X
{
    get { return (string)this["x"]; }
    set { this["x"] = value; }
}

Теперь я добавляю свой раздел следующим образом:

<mySection x="123" />

Я получаю эту ошибку:

Значение свойства 'x' не действительный. Ошибка: строка должна иметь длину не менее 1 символа.

Это сработает, если я изменю свойство конфигурации, чтобы включить значение по умолчанию, подобное этому:

[ConfigurationProperty("x", DefaultValue="abc", IsRequired = true)]
[StringValidator(MinLength = 1)]
public string X
{
    get { return (string)this["x"]; }
    set { this["x"] = value; }
}

Это означает, что валидатор проверяет значение по умолчанию, даже если IsRequired истинно. Это также означает, что я должен включить фиктивные значения по умолчанию для всех моих свойств, чтобы пройти проверку, даже если они фактически не будут использоваться.

Это просто плохой дизайн или есть веская причина для такого поведения?

12
задан hwiechers 19 September 2010 в 07:57
поделиться