gpt4 book ai didi

c# - 为什么 .NET Core 选项的配置不适用于泛型类型参数?

转载 作者:行者123 更新时间:2023-11-30 16:38:02 27 4
gpt4 key购买 nike

我有一个 .NET Core WebApi 项目。为了以一种简单的方式阅读应用程序设置,我将选项配置为使用 DI 注入(inject)。这很好用。但是,如果我尝试调用 Configure<>()使用泛型类型参数时,出现错误。

Argument 2: cannot convert from 'Microsoft.Extensions.Configuration.IConfigurationSection' to 'System.Action'

除了Configure<T>(Action<T> configureOptions)之外,该方法重载了似乎不再可用。

为什么调用不适用于泛型类型参数?

启动.cs

public class Startup
{
public IConfiguration Configuration { get; }

public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public void ConfigureServices(IServiceCollection services)
{
// services.AddMvc() etc...

services.AddOptions();

// Works fine
services.Configure<MyOption>(Configuration.GetSection(nameof(MyOption)));
}

private void AddOption<T>(IServiceCollection services)
{
// Wont work
services.Configure<T>(Configuration.GetSection(nameof(T)));
services.Configure<T>(Configuration.GetSection(""));
}
}

我的选项.cs

public class MyOption
{
public bool MyProp { get; set; }
}

应用设置.json

{
"MyOption": {
"MyProp": true
}
}

最佳答案

需要使用服务,配置如下:

services.Configure<MyOption>(setting =>
{
Configuration.GetSection("MyOption").Bind(setting);
});

关于c# - 为什么 .NET Core 选项的配置不适用于泛型类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56218195/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com