using Newtonsoft.Json; namespace JiLinApp.Docking.Alarm; public class AlarmCodeHelper { #region Fields private static readonly Dictionary AlarmCodeDict; private static readonly List LevelList; private static readonly List TypeList; #endregion Fields static AlarmCodeHelper() { string filePath = Path.Combine("config", "alarmcodes.json"); if (!File.Exists(filePath)) throw new FileNotFoundException(filePath); using StreamReader r = new(filePath); string jsonStr = r.ReadToEnd(); List list = JsonConvert.DeserializeObject>(jsonStr) ?? new(); AlarmCodeDict = list.ToDictionary(item => item.Id, item => item); LevelList = list.GroupBy(item => item.Level).Select(it => it.First().Level).ToList(); TypeList = list.GroupBy(item => item.Type).Select(it => it.First().Type).ToList(); } public static void VirtualInit() { } public static AlarmCode Get(string id) { return AlarmCodeDict[id]; } public static bool TryGet(string id, out AlarmCode alarmCode) { bool flag = AlarmCodeDict.TryGetValue(id, out AlarmCode? temp); alarmCode = temp ?? new(); return flag; } }