#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> /// Returns a <see cref="System.String"/> representation of the value object /// </summary> /// <param name="valueObject"></param> /// <returns>string that represents the <see cref="System.Object"/></returns> /// ------------------------------------------------------------------------ public static string ToString(object valueObject) { StringBuilder buffy = new StringBuilder(); buffy.Append("["); buffy.Append(valueObject.GetType().FullName); buffy.Append("] "); // null objects cannot be reflected if(valueObject == null) { buffy.Append(" is null."); return buffy.ToString(); } foreach(PropertyInfo objProperty in valueObject.GetType().GetProperties()) { string propName; propName = objProperty.Name+"="; buffy.Append(propName); if (objProperty != null) { object propValue = valueObject.GetType().InvokeMember(objProperty.Name, BindingFlags.GetProperty, null, valueObject, null); if (propValue != null) buffy.Append(propValue.ToString()+" "); else buffy.Append("<null> "); } else buffy.Append("<null> "); } foreach(FieldInfo objField in valueObject.GetType().GetFields()) { string fieldName; fieldName = objField.Name +"="; buffy.Append(fieldName); if (objField != null) { object fieldValue = valueObject.GetType().InvokeMember(objField.Name, BindingFlags.GetField, null, valueObject, null); buffy.Append(fieldValue.ToString()+" "); } else buffy.Append("<null> "); } // ----------- End --------- return buffy.ToString(); } // --------------------------------------------------------------------------- } }