在 IOptions 中根据需要标记配置选项

问题描述 投票:0回答:1

使用.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"
    

c# .net configuration .net-7.0
1个回答
0
投票
"RequiredOption"

使用 

services.AddOptions<MyOptions>(Configuration.GetSection("MyOptions")).ValidateDataAnnotations();

方法,允许您使用

 验证选项

AddOptions

ValidateDataAnnotations
扩展。
    

© www.soinside.com 2019 - 2024. All rights reserved.