c# - 错误 CS1503 - 无法从 Microsoft.Extensions.Configuration.IConfigurationSection 转换为 System.Action<>
问题描述
我收到一个错误:
错误 CS1503 参数 2:无法从 'Microsoft.Extensions.Configuration.IConfigurationSection' 转换为 'System.Action<>
当我使用带有 Bind() 的配置时,它正在工作。
var bandConfig = new BandSettings();
Configuration.GetSection("BandSettings").Bind(bandConfig );
但是使用下面的代码,我得到了上述错误。
我尝试了博客和其他论坛中建议的许多解决方案,例如 -从 .net 核心中的 appsettings.json 获取价值
但仍然是同样的错误。我错过了什么吗??
我有以下东西: appsettings.json
"BandSettings":{
"UserID": "aTestUserID",
"Password" : "aTestPassword"
}
BandSettings.cs
public class BandWidthSettings
{
public string UserID { get; set; }
public string ApiToken { get; set; }
}
测试助手.cs
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
}
解决方案
添加 NuGet 包Microsoft.Extensions.Options.ConfigurationExtensions以获取扩展方法,其中
services.Configure<BandSettings>(Configuration.GetSection("BandSettings"));
将工作。
推荐阅读
- email - 请求被拒绝,因为请求的一个或多个范围未经授权或已过期
- java - 正则表达式屏蔽多个电话号码(~),除了最后 4 位数字
- reactjs - React 17.0.1 地图未定义
- sum - BIGQUERY Sum Col1 基于 Col2 中的唯一条目和特定日期
- javascript - JavaScript代码错误中的策略模式实现
- c# - C# 数据比较
- node.js - MYSQL X DEV API 更新方法不起作用
- etrade-api - 在 etrade api 中更改股权顺序?
- kubernetes - 入口主机名不会改变
- java - PowerMockito whenNew thenReturn 不适用于传递类