以下代码是从docs.asp.net上的示例中删除的.
public void ConfigureServices(IServiceCollection services)
{
// Setup options with DI
services.AddOptions();
// Configure MyOptions using config
services.Configure<MyOptions>(Configuration);
// Configure MyOptions using code
services.Configure<MyOptions>(myOptions =>
{
myOptions.Option1 = "value1_from_action";
});
Run Code Online (Sandbox Code Playgroud)
调用services.Configure<MyOptions>(Configuration);
导致编译错误:
无法从'Microsoft.Extensions.Configuration.IConfigurationRoot'转换为'System.Action'
手动设置选项工作正常.我错过了一些非常明显的东西吗?
小智 22
我有同样的问题,我发现你需要将这个扩展添加到你的项目:
Microsoft.Extensions.Options.ConfigurationExtensions
如果要以这种方式配置强类型配置,则需要将以下 nuget 包添加到 ASP Core 项目。
Microsoft.Extensions.Options.ConfigurationExtensions
Run Code Online (Sandbox Code Playgroud)
包中包含的扩展方法将允许您以您想要的方式和大多数教程显示的方式配置强类型配置。
services.Configure<MyOptions>(Configuration);
Run Code Online (Sandbox Code Playgroud)
或者,您可以添加另一个活页夹包:
Microsoft.Extensions.Configuration.Binder
Run Code Online (Sandbox Code Playgroud)
然后配置看起来像这样:
services.AddOptions();
services.Configure<MyOptions>(x => Configuration.Bind(x));
Run Code Online (Sandbox Code Playgroud)
这是有这么多模块化打包扩展的缺点。很容易忘记功能存在的位置。
| 归档时间: |
|
| 查看次数: |
2195 次 |
| 最近记录: |