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