我有一个.NET6控制台应用程序.

我已安装(最新版本)

Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json

我在根文件夹中手动创建了一个appsettings.json文件.

在我的程序中我添加了.cs

var configuration = new ConfigurationBuilder()
     .AddJsonFile($"appsettings.json");

var config = configuration.Build();
var customString = config.GetSection("Custom:Customisation");

JSON文件的内容包括

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Custom": {
    "Customisation": {
      "FieldOne": "ThisIsValueOne",
      "FieldTwo": "ValueTwo"
    }
  },

  "Something": {
    "SomthingElsoe": {
      "MoreSetting": "1"
    }

  }
}
  1. 它找到了部分,但我看不到FieldOne等的任何值,我需要什么更改?
  2. 我是否可以将其转换为C#类,以便拥有具有值的强类型属性?

关于第二个问题,我对此做了研究,我注意到我需要构建器.服务,但这在控制台应用程序中不可用?

推荐答案

您可以使用此代码来解决您的问题 首先读取数据并将其转换为类

您必须安装以下程序包

Microsoft.Extensions.Configuration.FileExtensions 
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json
var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false);

IConfiguration config = builder.Build();
var myFirst班级 = config.GetSection("Custom:Customisation").Get<Customisation>();

班级

 public class Customisation
    {
        public string FieldOne { get; set; }
        public string FieldTwo { get; set; }
    }

Csharp相关问答推荐

当我 for each 请求创建实例时,我是否应该在C#中部署httpClient?

我可以 suppress 规则CS 9035一次吗?

如何使用XmlSerializer反序列化字符串数组?

如何注册实现同一接口的多个服务并注入到控制器构造函数中

ITypeLib2.GetLibStatistics()在C#中总是抛出AccessViolationException

如何将Kafka消息时间戳转换为C#中的日期和时间格式?

如何在没有额外副本的情况下将存储在IntPtr下的原始图像数据写入WinUI3中的Image控件?

Blazorise折线图仅绘制数据集的一部分

Rx.Net窗口内部可观测数据提前完成

Cosmos SDK和Newtonsoft对静态只读记录的可能Mutations

在swagger示例中添加默认数组列表

按需无缝转码单个HLS数据段

C#自定义验证属性未触发IsValid方法

CRL已过期,但ChainStatus告诉我RevocationStatus未知

如何实现有条件的自定义Json转换器隐藏属性

当try 测试具有协变返回类型的抽象属性时,类似功能引发System.ArgumentException

实体框架-IsRequired()与OnDelete()

C#中类库项目的源代码生成器

Blazor服务器项目中的Blazor/.NET 8/Web API不工作

用MongoDB c#驱动程序删除和返回嵌套数组中的文档