У меня возникла эта странная проблема ... в моем коде установлено ли значение IsRequired на false или true, тогда оно остается ложным. Однако если я ставлю DefaultValue, это сработает?C# - ConfigurationSection isRequired атрибут
Неработающая код:
public class FtpSettingsSection : ConfigurationSection
{
[ConfigurationProperty("host", IsRequired = true)]
public HostElement Host
{
get { return (HostElement)this["host"]; }
set { this["host"] = value; }
}
}
public class HostElement : ConfigurationElement
{
[ConfigurationProperty("URL", IsRequired = true)]
public string URL
{
get { return (string)this["URL"]; }
set { this["URL"] = value; }
}
}
и рабочий код:
public class FtpSettingsSection : ConfigurationSection
{
[ConfigurationProperty("host", DefaultValue = "", IsRequired = true)]
public HostElement Host
{
get { return (HostElement)this["host"]; }
set { this["host"] = value; }
}
}
public class HostElement : ConfigurationElement
{
[ConfigurationProperty("URL", DefaultValue = "", IsRequired = true)]
public string URL
{
get { return (string)this["URL"]; }
set { this["URL"] = value; }
}
}
Как получилось, что мне нужно установить DefaultValue на ""?
Первый пример кода dosent исключает любое исключение, даже если свойство хоста не определено в файле конфигурации? – ebb
Первый пример будет генерировать исключение, второй с атрибутом по умолчанию - нет. – dexter
На самом деле я протестировал это, и пример FIRST не генерирует исключение. В тестовой консоли приложение IsRequired, похоже, игнорируется. Если он IsRequired, вы не должны ставить значение по умолчанию, потому что тогда это действительно не требуется. Если вы указали значение IsRequired = true, тогда он должен выдать исключение, если вы не предоставили значение по умолчанию, но это не так. Я тестировал в .Net 4. –