#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> /// Get a <b>public</b> field value given its name /// </summary> /// <param name="srcObj">object to inspect</param> /// <param name="fieldName">Name of the field to retrieve the value from</param> /// <returns>property value</returns> /// ------------------------------------------------------------------------ public static Object GetFieldValue(object srcObj, string fieldName) { FieldInfo fieldInfoObj = srcObj.GetType().GetField(fieldName); if (fieldInfoObj == null) return null; // Get the value from property. object srcValue = srcObj.GetType() .InvokeMember(fieldInfoObj.Name, BindingFlags.GetField, null, srcObj, null); return srcValue; } } }