public object Render(ObjectRenderingRequest req)
        {
            IEnumerable obj = req?.RenderTarget as IEnumerable;

            if (obj == null)
            {
                return(req?.RenderTarget);
            }

            var prefix = "";
            var result = new StringBuilder();

            result.Append("[");
            result.Append(ObjectToCode.ToCSharpFriendlyTypeName(obj.GetType()));
            result.Append("]@(");
            foreach (var rec in obj)
            {
                var req2 = req.NewTarget(rec);
                result.Append(prefix);
                result.Append(req2.Render());
                prefix = ",";
            }
            result.Append(")");

            return(new AnnotatedFormattable(result.ToString()));
        }
        public object Render(ObjectRenderingRequest req)
        {
            if (req?.RenderTarget is AnnotatedFormattable)
            {
                return(req?.RenderTarget);
            }

            var target  = req.RenderTarget;
            var members = target.GetType().GetMembers().Where(m => m.MemberType == MemberTypes.Field || m.MemberType == MemberTypes.Property);
            var result  = new StringBuilder();

            result.Append("[");
            result.Append(ObjectToCode.ToCSharpFriendlyTypeName(target.GetType()));
            result.Append("]@{");

            foreach (var member in members)
            {
                result.Append('"');
                result.Append(member.Name);
                result.Append('"');
                result.Append('=');

                var value = Reflection.GetValue(member, target);
                var req2  = req.NewTarget(value);
                result.Append(req2.Render());
                result.Append(';');
            }
            result.Append("}");

            return(new AnnotatedFormattable(result.ToString()));
        }