我尝试绑定到应该由appsettings.json文件填充的自定义配置对象。
我的appsettings看起来有点像:
{
"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;
}
}
当我尝试将Configuration绑定到对象的最低级别时:
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
并查看我需要的所有信息。它只是不会为一个复杂的对象绑定。
答案 0 :(得分:3)
您的媒体资源必须与&#34; appsettings.json&#34;中的媒体资源名称相匹配。
您必须重命名您的设置&#39; myFoo
属性为Foo
,因为该属性名称位于json文件中。
答案 1 :(得分:2)
您还可以使用JsonProperty(包含在Newtonsoft.Json中)注释来告诉序列化器下面要做什么。
public class Settings
{
[JsonProperty("Foo")]
public Foo myFoo {get;set;}
}