public DeviceModelList ReadDevices() { string devicesDir = Path.Join(_configBaseDir, "devices"); if (!Directory.Exists(devicesDir)) { return new DeviceModelList() { new DeviceModel() } } ; string[] deviceBaseDirs = Directory.GetDirectories(devicesDir); DeviceModelList devices = new DeviceModelList(); foreach (string deviceBaseDir in deviceBaseDirs) { DeviceModel device = new DeviceModel(); device.DeviceId = Path.GetFileName(deviceBaseDir); //device Info device.Info = JsonSerializer.Deserialize <DeviceInfo>( File.ReadAllText(Path.Join(deviceBaseDir, "device.wdspec.json"))); //monitor rules device.MonitorRules = JsonSerializer.Deserialize <MonitorRuleList>( File.ReadAllText(Path.Join(deviceBaseDir, "monitorRules.json"))); device.PropertyRules = JsonSerializer.Deserialize <PropertyRuleModelList>( File.ReadAllText(Path.Join(deviceBaseDir, "propertyRules.json"))); string[] layerFiles = Directory.GetFiles(deviceBaseDir, "*.wdlayer.json"); foreach (string layerFile in layerFiles) { LayerModel layer = JsonSerializer.Deserialize <LayerModel>(File.ReadAllText(layerFile)); device.Layers.Add(layer.LayerId, layer); } devices.Add(device); } return(devices); }