我有一个附加到配置文件的应用程序:
{
"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];
}
}
编辑:
LoginModule
LoginLogic
我需要知道"LoginLogic"
版本的"Version"
键的值
答案 0 :(得分:1)
要用这种格式格式化的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"
如您所见,除了LoginLogic
的索引相同之外,这里没有真正的方法可以确切地说出哪个版本属于哪个ProjectModules
。但是,由于这只是字典中用作键的字符串,因此您不能轻易对其进行过滤或搜索。
如果可以的话,一个选项是稍微更改格式。例如,如果您使用的是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"
而且,按版本区分是很容易的。