Tuesday, January 22, 2013

A we bit o' reflection to brighten up your life


A couple of diagnostic extensions that make my life easier when debugging things. Enjoy.

public static class DiagnositcObjectExtensions
{
     public static string ToDiagnosticInfoString<T>(this IEnumerable<T> items)
     {
          var retval = String.Empty;

          if(items.Count<T>()>0)
          {
               StringBuilder sb = new StringBuilder();
               sb.AppendLine("-----BEGIN DIAGNOSTIC-------");

               foreach(var item in items)
               {
                    sb.AppendLine(item.ToDebugString<T>());
               }
               sb.AppendLine("-----END DIAGNOSTIC---------");

               retval = sb.ToString();

          }
          return retval;
     }

     public static string ToDebugString<T>(this T obj)
     {
          StringBuilder sb = new StringBuilder();
          Type _type = obj.GetType();

          PropertyInfo[] pi = _type.GetProperties();
     
          sb.AppendFormat("Type={0}\r\n",typeof(T).ToString());
          sb.AppendLine("Properties");
     

          foreach (var item in pi)
          {
               sb.AppendFormat("{0} {1} =  {2}\r\n",item.PropertyType.ToString(),
               item.Name,
               item.GetValue(obj));
          }

          return sb.ToString();
     }
}