【问题标题】:Cannot use IOptions in console app .NET Core无法在控制台应用程序 .NET Core 中使用 IOptions
【发布时间】:2021-08-22 12:02:05
【问题描述】:

我有一个正在构建配置的控制台应用程序

IConfiguration config = new ConfigurationBuilder()
   .AddJsonFile("appsettings.json", true, true)
   .Build();

var services = new ServiceCollection();
services.AddOptions();
services.Configure<ResourceConfiguration>(config.GetSection("ResourceConfiguration"));

这不起作用

  Error CS1503: Argument 2: cannot convert from 'Microsoft.Extensions.Configuration.IConfigurationSection' to 'System.Action<ResourceConfiguration>' (29, 55)

我的 using(以及我自己的命名空间)中有以下内容

使用 Microsoft.Extensions.Configuration; 使用 Microsoft.Extensions.DependencyInjection; 使用系统; 使用 System.IO;

IConfiguration config = new ConfigurationBuilder()
   .AddJsonFile("appsettings.json", true, true)
   .Build();

返回可能是问题的 IConfigurationRoot?

我做错了什么?

这是 .NET Core 3.1

保罗

【问题讨论】:

  • 您的文件顶部有哪些using 语句?您的项目中有哪些 nuget 包?
  • 错误提示Configure&lt;ResourceConfiguration&gt; 需要一个方法,而不是一个部分。也许您尝试使用错误的扩展方法?
  • 正如@PanagiotisKanavos 所说,您需要“投射”,试试这个:config.GetSection("ResourceConfiguration").Get&lt;ResourceConfiguration&gt;()
  • @Valter 那不是我说的。您不能将 IConfigurationSection 转换为 Action。问题的代码很好,和the documentation examples和我用过的代码一模一样
  • 我错过了阅读错误...

标签: c# dependency-injection config configuration-files


【解决方案1】:

您可能错过了包裹Microsoft.Extensions.Options.ConfigurationExtensions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2023-04-10
    • 2019-05-18
    • 2020-02-08
    • 2020-10-27
    相关资源
    最近更新 更多