Mega Code Archive

 
Categories / C# / Reflection
 

Helper to display the contents of the Value Object

#region License and Copyright /*  * Dotnet Commons Reflection  *  * This library is free software; you can redistribute it and/or modify it   * under the terms of the GNU Lesser General Public License as published by   * the Free Software Foundation; either version 2.1 of the License, or   * (at your option) any later version.  *  * This library is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License   * for more details.   *  * You should have received a copy of the GNU Lesser General Public License   * along with this library; if not, write to the   * Free Software Foundation, Inc.,   * 59 Temple Place,   * Suite 330,   * Boston,   * MA 02111-1307   * USA   *   */ #endregion using System; using System.Collections; using System.IO; using System.Reflection; using System.Runtime.Serialization.Formatters.Binary; using System.Text; namespace Dotnet.Commons.Reflection {   /// -----------------------------------------------------------------------   /// <summary>     /// This utility class contains a rich sets of utility methods that perform operations    /// on objects during runtime such as copying of property and field values   /// between 2 objects, deep cloning of objects, etc.     /// </summary>   /// -----------------------------------------------------------------------   public abstract class ObjectUtils   {     /// ------------------------------------------------------------------------     /// <summary>     /// Helper to display the "contents" of the Value Object     /// </summary>     /// <param name="valueObject"></param>     /// <returns></returns>     /// ------------------------------------------------------------------------     public static string ConvertToString(object valueObject)      {       StringBuilder buffy = new StringBuilder(valueObject.GetType().FullName);       // null objects cannot be reflected       if(valueObject == null)        {         buffy.Append(" is null.");         return buffy.ToString();       }       buffy.Append("[\n");       foreach(PropertyInfo objProperty in valueObject.GetType().GetProperties())       {         string nvp;         nvp = "  <<Property>> " + "<" + objProperty.PropertyType + "> " + objProperty.Name+"=";         if (objProperty != null)          {           object   value = valueObject                    .GetType()                    .InvokeMember(objProperty.Name,                           BindingFlags.GetProperty,                           null,                           valueObject,                           null);           buffy.Append(nvp+value.ToString()+"\n");         }         else                   {           buffy.Append(nvp+"<null>\n");         }       }       foreach(FieldInfo objField in valueObject.GetType().GetFields())       {         string nvp;         nvp = "  <<Field>> " + "<" + objField.FieldType + "> " + objField.Name +"=";         if (objField != null)          {           object   value = valueObject.GetType().InvokeMember(objField.Name,                                     BindingFlags.GetField,                                                                         null,                                     valueObject,                                     null);           buffy.Append(nvp+value.ToString()+"\n");         }         else                   {           buffy.Append(nvp+"<null>\n");         }       }       // ----------- End ---------       buffy.Append("]");       return buffy.ToString();     }     } }