Mega Code Archive

 
Categories / C# / Reflection
 

Return true if the specified property name identifies a writeable property on the specified object

#region License and Copyright /*  * Dotnet Commons Reflection   *  * Copyright  2005. EDWARD LIM  *  * 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.Collections.Specialized; using System.Reflection; //using Dotnet.Commons.Lang; namespace Dotnet.Commons.Reflection {   ///     /// <summary>   /// This class contains utility methods that perform operations on object properties.    /// </summary>   ///    /// <remarks>    ///  Copyright 2006 by Edward Lim.   /// All rights reserved.   /// </remarks>   ///    public sealed class PropertyUtils   {     private PropertyUtils()  {}         /// ----------------------------------------------------------------         /// <summary>         ///  Return <b>true</b> if the specified property name identifies a          /// writeable property on the specified object;          /// otherwise, return <b>false</b>.         /// </summary>         /// <param name="obj"></param>         /// <param name="propertyName"></param>         /// <param name="ignoreCase">ignore case sensitivity</param>         /// <returns></returns>         /// <exception cref="ArgumentNullException">If obj parameter is null</exception>         /// <exception cref="ArgumentException">if the propertyName supplied          /// cannot be found in the object</exception>         /// ----------------------------------------------------------------         public static bool IsWritable(Object obj, string propertyName, bool ignoreCase)         {             if (obj == null) throw new ArgumentNullException("obj");             BindingFlags bindingAttrs = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public;             bindingAttrs = (ignoreCase) ? bindingAttrs | BindingFlags.IgnoreCase : bindingAttrs;             PropertyInfo pi = obj.GetType().GetProperty(propertyName,bindingAttrs);                                                             if (pi == null)                 throw new ArgumentException(string.Format("The '{0}' object does not have a '{1}' property", obj.GetType().FullName, propertyName));             return pi.CanWrite;         }     } }