コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }