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>");
}
}