我正在开发一个.NET 8 WorkerService项目,在该项目中,我从多个来源(例如

问题描述 投票:0回答:1

PROGRAM.CS:


Units
appSettings.json:

var builder = Host.CreateApplicationBuilder(args); var units = builder.Configuration.GetSection("Units").Get<Unit[]>(); foreach (var unit in units) { foreach (var item in unit.Paths) { Console.WriteLine(item); } } public record Unit(string Name, string[] Paths);

appsettings.development.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "Units": [
    {
      "name": "test1",
      "paths": [
        "p1",
        "p2",
        "p3"
      ]
    },
    {
      "name": "test2",
      "paths": [
        "p4",
        "p5",
        "p6"
      ]
    }
  ]
}

当我运行项目时,我希望输出是:

{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.Hosting.Lifetime": "Information" } } }
,但是,实际输出为:

p1 p2 p3 p4 p5 p6

问题:
为什么我会得到重复的值?有人以前遇到过这种行为,可以阐明引起的行为吗?

任何洞察力都将不胜感激!

    

问题是使用没有无参数构造函数的
p1
p2
p3
p1
p2
p3
p4
p5
p6
p4
p5
p6
,也具有属性。

您可以通过正常类来复制这一点: record

如果您删除构造函数,则不会获得重复的值。

应该在某个地方记录这一点,但具有约束力的行为似乎是:
c# asp.net json .net configuration
1个回答
0
投票

首先使用构造函数

然后仍然填充具有值

的属性


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.