public static string Render <K, V>(this IEnumerable <KeyValuePair <K, V> > source) { string fieldDelimiter = String.Empty; var builder = new StringBuilder(); builder.Append('['); if (source != null) { foreach (var current in source) { builder.Append(fieldDelimiter); builder.Append(RenderAny(current.Key)); builder.Append('='); if (ReferenceEquals(current.Value, null)) { builder.Append("null"); } else if (current.Value.GetType().IsGenericDictionary()) { builder.Append(MagicMarker.NewMagicDictionary <object, object>(current.Value)); } else if (current.Value is string) { builder.Append(RenderAny(current.Value)); } else if (current.Value is IEnumerable) { builder.Append(Render((IEnumerable)current.Value)); } else { builder.Append(RenderAny(current.Value)); } fieldDelimiter = ", "; } } builder.Append(']'); return(builder.ToString()); }