jhorsman
4/18/2017 - 7:14 AM

Write object to HTML

Write object to HTML

        private void DumpRequest(HttpListenerRequest request, StringBuilder sb)
        {
            this.DumpObject(request, sb);
        }

        private void DumpObject(object o, StringBuilder sb)
        {
            this.DumpObject(o, sb, true);
        }

        private void DumpObject(object o, StringBuilder sb, bool ulli)
        {
            if (ulli)
                sb.Append("<ul>");

            if (o is string || o is int || o is long || o is double)
            {
                if (ulli)
                    sb.Append("<li>");

                sb.Append(o.ToString());

                if (ulli)
                    sb.Append("</li>");
            }
            else
            {
                Type t = o.GetType();
                foreach (PropertyInfo p in t.GetProperties(BindingFlags.Public | BindingFlags.Instance))
                {
                    sb.Append("<li><b>" + p.Name + ":</b> ");
                    object val = null;

                    try
                    {
                        val = p.GetValue(o, null);
                    }
                    catch { }

                    if (val is string || val is int || val is long || val is double)
                        sb.Append(val);
                    else

                    if (val != null)
                    {
                        Array arr = val as Array;
                        if (arr == null)
                        {
                            NameValueCollection nv = val as NameValueCollection;
                            if (nv == null)
                            {
                                IEnumerable ie = val as IEnumerable;
                                if (ie == null)
                                    sb.Append(val.ToString());
                                else
                                    foreach (object oo in ie)
                                        this.DumpObject(oo, sb);
                            }
                            else
                            {
                                sb.Append("<ul>");
                                foreach (string key in nv.AllKeys)
                                {
                                    sb.AppendFormat("<li>{0} = ", key);
                                    this.DumpObject(nv[key], sb, false);
                                    sb.Append("</li>");
                                }
                                sb.Append("</ul>");
                            }
                        }
                        else
                            foreach (object oo in arr)
                                this.DumpObject(oo, sb);
                    }
                    else
                    {
                        sb.Append("<i>null</i>");
                    }
                    sb.Append("</li>");
                }
            }
            if (ulli)
                sb.Append("</ul>");
        }
    }