refactor: 重构配置文件读取逻辑

This commit is contained in:
2025-01-21 17:59:33 +08:00
parent 2aeef0227c
commit a11b29a21d

View File

@@ -41,18 +41,24 @@ public class Config
public T? Get<T>(string key, T? defaultValue) public T? Get<T>(string key, T? defaultValue)
{ {
LoadConfigData();
var keys = key.Split('.'); var keys = key.Split('.');
var currentData = _configData; var currentData = _configData;
for (var i = 0; i < keys.Length - 1; i++) for (var i = 0; i < keys.Length - 1; i++)
{ {
if (!currentData.TryGetValue(keys[i], out var tValue)) return defaultValue; if (!currentData.TryGetValue(keys[i], out var tValue)) return defaultValue;
if (tValue is JObject jObject) switch (tValue)
currentData = jObject.ToObject<Dictionary<string, object>>(); {
else if (tValue is Dictionary<string, object> nestedDict) case JObject jObject:
currentData = jObject.ToObject<Dictionary<string, object>>() ?? new Dictionary<string, object>();
break;
case Dictionary<string, object> nestedDict:
currentData = nestedDict; currentData = nestedDict;
else break;
default:
return defaultValue; return defaultValue;
} }
}
if (currentData.TryGetValue(keys[^1], out var result) && result is T typedResult) return typedResult; if (currentData.TryGetValue(keys[^1], out var result) && result is T typedResult) return typedResult;
@@ -61,6 +67,7 @@ public class Config
public void Set<T>(string key, T? value) public void Set<T>(string key, T? value)
{ {
LoadConfigData();
var keys = key.Split('.'); var keys = key.Split('.');
var currentData = _configData; var currentData = _configData;
for (var i = 0; i < keys.Length - 1; i++) for (var i = 0; i < keys.Length - 1; i++)