Скажем, у меня есть свойство конфигурации, которое выглядит так. Обратите внимание, что значение по умолчанию отсутствует.
[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 истинно. Это также означает, что я должен включать фиктивные значения по умолчанию для всех моих свойств, чтобы пройти проверку, даже если они фактически не будут использоваться.
Это просто плохой дизайн или есть веская причина такого поведения?