Tôi đang gặp vấn đề này ... trong mã của tôi cho dù tôi đặt giá trị của IsRequired thành false hay true thì nó vẫn sai. Tuy nhiên nếu tôi đặt trong DefaultValue nó hoạt động?C# - ConfigurationSection isRequired attribute
Mã không làm việc là:
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; }
}
}
và mã làm việc là:
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; }
}
}
Tại sao mà tôi cần phải thiết lập DefaultValue để ""?
Ví dụ đầu tiên của mã dosent ném bất kỳ ngoại lệ nào ngay cả khi thuộc tính máy chủ không được xác định trong tệp cấu hình? – ebb
Ví dụ đầu tiên sẽ ném một ngoại lệ, thứ hai với thuộc tính mặc định sẽ không. – dexter
Thực ra tôi đã thử nghiệm điều này và ví dụ ĐẦU TIÊN không ném một ngoại lệ. Trong ứng dụng bảng điều khiển thử nghiệm, IsRequired dường như bị bỏ qua. Nếu nó IsRequired bạn không nên đặt giá trị mặc định bởi vì sau đó nó thực sự là không cần thiết. Nếu bạn gắn cờ nó IsRequired = true thì nó sẽ ném một ngoại lệ nếu bạn không cung cấp một mặc định nhưng nó không. Tôi đã thử nghiệm trong .Net 4. –