C# 下载配置数据
我将一个应用程序附加到配置文件:C# 下载配置数据,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,我将一个应用程序附加到配置文件: { "ProjectModules": [ { "Version": "1", "LoginModule": { "LoginLogic": "Project1.ModulesV1.LoginModule.Logic.LoginLogic" } }, { "Version": "2", "LoginModule": { "LoginLogic"
{
"ProjectModules": [
{
"Version": "1",
"LoginModule": {
"LoginLogic": "Project1.ModulesV1.LoginModule.Logic.LoginLogic"
}
},
{
"Version": "2",
"LoginModule": {
"LoginLogic": "Project1.ModulesV2.LoginModule.Logic.LoginLogic"
}
}
]
}
如何获取“LoginLogic”键和特定版本的值?
这里我开始做,但它没有考虑到它是一个数据表
if (_configuration.GetSection("ProjectModules:" + moduleName).Exists())
{
var configSection = _configuration.GetSection("ProjectModules:" + moduleName);
if (configSection[sectionName] != null)
{
part = configSection[sectionName];
}
}
编辑:
- moduleName->
LoginModule
- sectionName->
LoginLogic
我需要获取
“LoginLogic”
键的值,知道版本“version”
,如果不是不可能的话,那么用这种方式格式化JSON将非常困难。您需要了解配置系统是如何工作的。无论配置源(JSON、环境变量、控制台参数等)是什么,我的意思是所有内容最终都会转储到字典中。配置提供程序的全部职责就是获取源代码并将其转换为字典,然后返回并合并到主配置字典中
因此,您在这里实际创建的是:
["ProjectModules[0]:Version"] = 1
["ProjectModules[0]:LoginModule:LoginLogic"] = "Project1.ModulesV1.LoginModule.Logic.LoginLogic"
["ProjectModules[1]:Version"] = 2
["ProjectModules[1]:LoginModule:LoginLogic"] = "Project1.ModulesV2.LoginModule.Logic.LoginLogic"
正如您所看到的,除了ProjectModules
的索引相同之外,这里没有真正的方法来准确地告诉哪个版本属于哪个LoginLogic
。然而,由于这只是一个字符串,在字典中充当一个键,因此您无法轻松筛选或搜索它
一个选择是,如果可以的话,稍微改变一下格式。例如,如果您使用类似JSON的:
{
"ProjectModules": {
"Version1": {
"LoginModule": {
"LoginLogic": "Project1.ModulesV1.LoginModule.Logic.LoginLogic"
}
},
"Version2": {
"LoginModule": {
"LoginLogic": "Project1.ModulesV1.LoginModule.Logic.LoginLogic"
}
}
}
}
然后,你会得到:
["ProjectModules:Version1:LoginModule:LoginLogic"] = "Project1.ModulesV1.LoginModule.Logic.LoginLogic"
["ProjectModules:Version2:LoginModule:LoginLogic"] = "Project1.ModulesV2.LoginModule.Logic.LoginLogic"
而且,很容易根据版本进行区分。没有名为“
”的项目模块:“+moduleName
”-只有一个名为“ProjectModules
”的部分。您从哪里获得moduleName
,它是什么?什么是sectionName
?@fredrik I添加在描述中