Mega Code Archive

 
Categories / C# / Reflection
 

Get a property value given its name

#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 property value given its name     /// </summary>     /// <param name="srcObj">object to inspect</param>     /// <param name="propertyName">Name of the property to retrieve the value from</param>     /// <returns>property value</returns>     /// ------------------------------------------------------------------------     public static Object GetProperty(object srcObj, string propertyName)     {       PropertyInfo propInfoObj = srcObj.GetType().GetProperty(propertyName);       if (propInfoObj == null)         return null;       // Get the value from property.       object srcValue = srcObj                 .GetType()                 .InvokeMember(propInfoObj.Name,                         BindingFlags.GetProperty,                         null,                         srcObj,                         null);       return srcValue;     }         /// <summary>         /// Get a property value given its name.          /// </summary>         /// <param name="srcObj">object to inspect</param>         /// <param name="propertyName">Name of the property to retrieve the value from</param>         /// <param name="ignoreCase">ignore case sensitivity with the supplied property name.</param>         /// <returns>value of the Property request if found, <b>null</b> otherwise.</returns>         /// <remarks>This method will get property in any scope, including public and non public,         /// instance and static.</remarks>         public static Object GetProperty(object srcObj, string propertyName, bool ignoreCase)         {             PropertyInfo propInfoObj;             BindingFlags bindingAttrs = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;             bindingAttrs = (ignoreCase)? bindingAttrs | BindingFlags.IgnoreCase : bindingAttrs;             propInfoObj = srcObj.GetType().GetProperty(propertyName, bindingAttrs);                                      if (propInfoObj == null)                 return null;             // Get the value from property.             object srcValue = srcObj                                 .GetType()                                 .InvokeMember(propInfoObj.Name,                                                 BindingFlags.GetProperty,                                                 null,                                                 srcObj,                                                 null);             return srcValue;         }     } }