在没有 ASP.NET Core 的情况下将 IConfigurationSection 绑定到复杂对象
Posted
技术标签:
【中文标题】在没有 ASP.NET Core 的情况下将 IConfigurationSection 绑定到复杂对象【英文标题】:Bind an IConfigurationSection to a complex object without ASP.NET Core 【发布时间】:2017-12-15 18:53:21 【问题描述】:我有一个 .NET Core 控制台应用程序,想要读取 appsettings.json
并将部分解析为 List<Param>
(没有依赖注入或 ASP.NET Core)。
我已经尝试过How do I bind a multi level configuration object using IConfiguration in a .net Core application?,但似乎.Get<T>()
已从netcoreapp1.1
中删除
IConfigurationSection myListConfigSection = configurationRoot.GetSection("ListA");
List<Param> paramList;
//Get does not exist
//paramList = myListConfigSection.Get<Param>();
string paramListJson = myListConfigSection.Value // is null
// won't work neither because paramListJson is null
paramList = JsonConvert.DeserializeObject<Param>(paramListJson);
appsettings.json:
"ListA": [
"ID": "123", "Param": "ABC",
"ID": "123", "Param": "JKS",
"ID": "456", "Param": "DEF"
]
有没有一种简单的方法可以将配置加载到对象中,还是我必须再次读取配置文件并自己使用JsonConvert
解析它?
【问题讨论】:
复制:***.com/questions/36694099/… 【参考方案1】:Get<T>
在包Microsoft.Extensions.Configuration.Binder
中定义
【讨论】:
谢谢,它成功了。尽管我非常喜欢它,但有时我讨厌他们将所有内容都切换到不同的 nkpg。 #loveHate 是的,我一直在寻找并找到那个“额外”的 nkpg。 这似乎与 GetSection 不同,因为它似乎将整个配置文件作为一个对象获取。 您可以在 IConfiguratoinSection 上使用它并将此部分作为对象获取以上是关于在没有 ASP.NET Core 的情况下将 IConfigurationSection 绑定到复杂对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有表单的情况下将字符串数组发布到 ASP.NET MVC 控制器?
如何在没有登录表单的情况下将摘要身份验证与 asp.net web api 和 angular js 一起使用?
没有 ASP.NET 身份的 .NET Core 外部身份验证
ASP.NET Core - 在没有Ajax的情况下调用javascript中的控制器方法