Joã*_*hin 3 c# appsettings .net-core asp.net-core
我在从我的appsettings.json. 该文件如下所示:
"Integrations": {
"System01": {
"Host": "failover://(tcp://localhost:61616)?transport.timeout=2000",
"User": "admin",
"Password": "admin"
},
"System02": {
"Host": "failover://(tcp://localhost:61616)?transport.timeout=2000",
"User": "admin",
"Password": "admin"
},
}
Run Code Online (Sandbox Code Playgroud)
我有以下 DTO:
public class IntegrationsConfigurationDto
{
public string Host { get; set; }
public string User { get; set; }
public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当尝试阅读它时:
var config = _configuration.GetValue<IntegrationsConfigurationDto>("Integrations:System01");
Run Code Online (Sandbox Code Playgroud)
我明白了null。但如果我这样做:
var config = new IntegrationsConfigurationDto();
_config.Bind("Integrations:System01", config);
Run Code Online (Sandbox Code Playgroud)
我在config变量中正确获取了值。
为什么会这样?GetValue<T>在这种情况下如何使用?
提前致谢。
Kir*_*kin 10
GetValue只适用于简单的值,比如string,int等-它不经过嵌套结构的层次结构。
ConfigurationBinder.GetValue<T>从具有指定键的配置中提取值并将其转换为指定类型。如果未找到键,重载允许您提供默认值。
不要使用Bind,而是使用以下内容来避免创建自己的 实例IntegrationsConfigurationDto:
var config = _configuration.GetSection("Integrations:System01")
.Get<IntegrationsConfigurationDto>();
Run Code Online (Sandbox Code Playgroud)
ConfigurationBinder.Get<T>绑定并返回指定的类型。Get<T>比使用更方便Bind。
| 归档时间: |
|
| 查看次数: |
3077 次 |
| 最近记录: |