使用.net IOptions框架,是否可以根据需要标记特定值,这样如果未配置该值,应用程序将不会启动?
例如,如果我要创建选项类:
class MyOptions{
public string OptionalOption { get; set; }
[Required]
public string RequiredOption { get;set; }
}
并与
绑定services.Configure<MyOptions>(Configuration.GetSection("MyOptions"));
如果我的
appsettings.json
仅包含,我希望应用程序抛出异常
{
"MyOptions": {
"OptionalOption": "foo"
}
}
我可以通过手动检查每个消耗
IOptions<MyOptions>
的构造函数来完成类似的事情,但我宁愿不做那么远。奖励:如果我使用 if (myOptions.Value.RequiredOption == null)
,我希望异常能够读取类似于
[ConfigurationKeyName("REQUIRED_OPTION")]
的内容,而不是类中的实际属性名称,即 "Required configuration MyOptions:REQUIRED_OPTION not found in Configuration"
。"RequiredOption"
使用 services.AddOptions<MyOptions>(Configuration.GetSection("MyOptions")).ValidateDataAnnotations();
方法,允许您使用
验证选项
AddOptions
和
ValidateDataAnnotations
扩展。