in_*_*are 11 .net c# c#-4.0 .net-core asp.net-core
我收到一个错误:
错误 CS1503 参数 2:无法从“Microsoft.Extensions.Configuration.IConfigurationSection”转换为“System.Action<>
当我使用Configure with Bind() 时,它正在工作。
var bandConfig = new BandSettings();
Configuration.GetSection("BandSettings").Bind(bandConfig );
Run Code Online (Sandbox Code Playgroud)
但是使用下面的代码,我收到了上述错误。
我尝试了博客和其他论坛中建议的许多解决方案,例如 -从 .net core 中的 appsettings.json 获取价值
但仍然是同样的错误。我错过了什么吗??
我有以下内容: appsettings.json
"BandSettings":{
"UserID": "aTestUserID",
"Password" : "aTestPassword"
}
Run Code Online (Sandbox Code Playgroud)
频段设置.cs
public class BandWidthSettings
{
public string UserID { get; set; }
public string ApiToken { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
测试助手
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
public static IConfiguration GetTestConfiguration()
=> new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
public IConfiguration Configuration { get; }
public TestHelper(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
var config = new BandSettings();
var bandSettingsSection = Configuration.GetSection("BandSettings");
services.Configure<BandSettings>(bandSettingsSection); //Error is getting on this line - bandSettingsSection
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*bot 42
添加 NuGet 包Microsoft.Extensions.Options.ConfigurationExtensions以获取扩展方法,其中
services.Configure<BandSettings>(Configuration.GetSection("BandSettings"));
Run Code Online (Sandbox Code Playgroud)
将工作。
参考:https : //github.com/dotnet/AspNetCore.Docs/issues/18833
为设置创建 POCO
public class MySetting
{
public string Setting{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在启动时它完美地工作,因为它应该是:
services.Configure<MySetting>(Configuration.GetSection("MySetting"));
Run Code Online (Sandbox Code Playgroud)
但是,在我的依赖注入中添加问题评论中提到的绑定。
private static void ConfigureServices(IServiceCollection services)
{
var mySection = configuration.GetSection("MySetting");
services.Configure<MySetting>(c => mySection .Bind(c));
}
Run Code Online (Sandbox Code Playgroud)
public IConfiguration Configuration { get; }
public TestHelper(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
//Configure section binding
services.Configure<BandSettings>(Configuration.GetSection(BandSettings.SECTION));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8387 次 |
| 最近记录: |