private static string GenerateString(ConfigValue config, string currentIndentation) { var keys = config.GetKeys(); if (keys.Length == 0) { return(""); } var builder = new StringBuilder(keys.Length * 2); foreach (var key in keys) { var valuesList = config.GetAll(key); foreach (var value in valuesList) { var raw = value.AsRawString(); if (!string.IsNullOrEmpty(raw)) { raw = " " + raw; } builder.AppendLine($"{currentIndentation}{key}{raw}"); builder.Append(GenerateString(value, currentIndentation + BaseIndentation)); } } return(builder.ToString()); }
private static T LoadToCollectionWrap <T>(ConfigValue config) where T : class, new() { var keys = config.GetKeys(); if (keys.Length > 1) { throw new FormatException("Array can only contains values with the same identifier"); } else if (keys.Length == 0) { return(new T()); } var elementsType = typeof(T).GetGenericArguments().Single(); var genericLoadToCollection = MethodLoadToCollection.MakeGenericMethod(typeof(T), elementsType); return((T)genericLoadToCollection.Invoke(null, new object[] { config.GetAll(keys[0]) })); }