最近,我使用IOptions接口读取Asp.net核心项目中的配置,我发现我的代码不会显示异常页面,直到我用所需的属性显式调用“ validate”方法为止,如下面的代码所示。
appsettings.json
"DashboardSettings": {
"Header": {
"Title": "Seguro De Coche"//,
//"SearchBoxEnabled": true
}
},
DashboardSetting.cs
public class DashboardSettings
{
public HeaderSettings Header { get; set; }
}
public class HeaderSettings
{
public string Title { get; set; }
[Required]
public bool SearchEnabled { get; set; }
}
启动文件
services.AddOptions<DashboardSettings>().
Bind(configuration.GetSection("DashboardSettings")).
ValidateDataAnnotations();
在上述情况下,“ SearchEnabled”属性所需的验证不会触发。当我显式调用带有属性的validate方法时,它将触发。 (请参见下面的代码以及验证方法)
services.AddOptions<DashboardSettings>().
Bind(configuration.GetSection("DashboardSettings")).
ValidateDataAnnotations().
Validate(v =>
{
return v.Header.SearchEnabled;
});
所以我的问题是,如果我的强类型将具有多个配置属性,那么我将使用类的所有属性来验证它们吗?如果是这样,对我来说这不是一个好主意。有什么建议吗?