gpt4 book ai didi

c# - 如何在 .net Core 应用程序中使用 IConfiguration 绑定(bind)多级配置对象?

转载 作者:行者123 更新时间:2023-11-30 14:24:21 25 4
gpt4 key购买 nike

我正在尝试绑定(bind)到自定义配置对象,该对象应由 appsettings.json 文件填充。

我的应用设置看起来有点像:

{
"Logging": {
"IncludeScopes": true,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"Settings": {
"Foo": {
"Interval": 30,
"Count": 10
}
}
}

设置类如下所示:

public class Settings
{
public Foo myFoo {get;set;}
}

public class Foo
{
public int Interval {get;set;}
public int Count {get;set;}

public Foo()
{}

// This is used for unit testing. Should be irrelevant to this question, but included here for completeness' sake.
public Foo(int interval, int count)
{
this.Interval = interval;
this.Count = count;
}
}

当我尝试将配置绑定(bind)到最低级别的对象时:

Foo myFoo = Configuration.GetSection("Settings:Foo").Get<Foo>();

myFoo 正确地具有一个 Interval 和一个 Count,其值分别设置为 30 和 10。

但这不是:

Settings mySettings = Configuration.GetSection("Settings").Get<Settings>();

mySettings 有一个空的 foo

令人沮丧的是,如果我使用调试器,我可以看到正在从 appsettings.json 文件中读取必要的数据。我可以进入 Configuration => Non-Public Members => _providers => [0] => Data 并查看我需要的所有信息。它只是不会绑定(bind)复杂的对象。

最佳答案

您的属性必须与“appsettings.json”中的属性名称相匹配。

您必须将设置的 myFoo 属性重命名为 Foo,因为这是 json 文件中的属性名称。

关于c# - 如何在 .net Core 应用程序中使用 IConfiguration 绑定(bind)多级配置对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41369996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com