/// <summary> /// Async function to load and serialize a <see cref="ConfigFile"/> from disk /// </summary> /// <param name="configFilePath">the full file path to the <see cref="ConfigFile"/></param> /// <returns>A serialized <see cref="ConfigFile"/></returns> public async Task <ConfigFile> AsyncLoadConfigFile(string configFilePath) { if (string.IsNullOrWhiteSpace(configFilePath)) { throw new ArgumentException("ConfigLoader.AsyncLoadConfigFile called with empty/null configFilePath"); } if (!File.Exists(configFilePath)) { throw new ConfigException($"ConfigLoader.AsyncLoadConfigFile cannot find configFile: '{configFilePath}'"); } string configFileRaw = await File.ReadAllTextAsync(configFilePath); ConfigFile configFile = null; try { JsonSerializerSettings settings = ValidatorRulesSerializationSettings.GetSettings(); configFile = JsonConvert.DeserializeObject <ConfigFile>(configFileRaw, settings); } catch { throw new ConfigException($"ConfigLoader.AsyncLoadConfigFile cannot deserialize '{configFilePath}'"); } return(configFile); }
public override List <BaseValidatorRule> ReadJson(JsonReader reader, Type objectType, List <BaseValidatorRule> existingValue, bool hasExistingValue, JsonSerializer serializer) { JsonSerializerSettings settings = ValidatorRulesSerializationSettings.GetSettings(); if (reader.TokenType == JsonToken.StartArray) { JArray arrayEntry = JArray.Load(reader); int count = arrayEntry.Count; List <BaseValidatorRule> ruleList = new List <BaseValidatorRule>(count); foreach (JObject item in arrayEntry.Children()) { string jsonString = item.ToString(); BaseValidatorRule rule = JsonConvert.DeserializeObject <BaseValidatorRule>(jsonString, settings); ruleList.Add(rule); } return(ruleList); } return(null); }