在我的 ASP.NET Core 2.2 WebApi 项目中,我想将配置从中加载appsettings.json到强类型对象中。appsettings.json 具有以下配置部分:{ "MySettings1": { "Name": "John Smith", "Age": "25", }}我想加载到强类型对象中MySettings:public class MySettings{ public string Name { get; set; } public int Age { get; set; }}我可以在我的Startup.ConfigureServices()方法中这样做:services.Configure<MySettings>(configuration.GetSection("MySettings1"));或者像这样:services.AddOptions<MySettings>().Bind(configuration.GetSection("MySettings1"));这两种方法有什么区别?它们都工作正常,因为在这两种情况下我都能获得正确的IOptions<MySettings>注入实例HomeController。在某些特定情况下,我应该使用其中一种方法而不是另一种方法吗?(例如,将来我可能希望在从配置中填充 MySettings 对象后添加某种运行时验证,所以在这种情况下我应该更喜欢一种方法而不是另一种方法吗?)
1 回答
LEATH
TA贡献1936条经验 获得超6个赞
这是在 2018 年 11 月的 Github 问题中提出的问题:AddOptions() vs. Multiple Configure(…)。这两种方法做同样的工作,但AddOptions
后来出现并允许更多的定制。
Configure(Action configureOptions) 和 OptionsBuilder.Configure(Action configureOptions) 最终都会做同样的事情:
services.AddSingleton<IConfigureOptions<TOptions>>( new ConfigureNamedOptions<TOptions>(name, configureOptions));
而OptionsBuilder.Bind(IConfiguration config)实际上会直接调用Configure(IConfiguration config),所以它们也是等价的。
所以这两个 API 是可以互换的。您可以期望 services.Configure 调用继续工作。选项生成器 API 后来出现,允许使用各种实用程序方法进行更多控制。但它不能替代直接的 services.Configure API。
- 1 回答
- 0 关注
- 67 浏览
添加回答
举报
0/150
提交
取消