Mega Code Archive

 
Categories / C# / Reflection
 

Gets the specified attribute from the PropertyDescriptor

//Microsoft Public License (Ms-PL) //http://visualizer.codeplex.com/license using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.Reflection; namespace Redwerb.BizArk.Core.AttributeExt {     /// <summary>     /// Provides extension methods for PropertyDescriptor.     /// </summary>     public static class AttributeExt     {         /// <summary>         /// Gets the specified attribute from the PropertyDescriptor.         /// </summary>         /// <typeparam name="T"></typeparam>         /// <param name="prop"></param>         /// <returns></returns>         public static T GetAttribute<T>(this PropertyDescriptor prop) where T : Attribute         {             foreach (Attribute att in prop.Attributes)             {                 var tAtt = att as T;                 if (tAtt != null) return tAtt;             }             return null;         }         /// <summary>         /// Gets the specified attribute from the type.         /// </summary>         /// <typeparam name="T"></typeparam>         /// <param name="type"></param>         /// <param name="inherit"></param>         /// <returns></returns>         public static T GetAttribute<T>(this Type type, bool inherit) where T : Attribute         {             var atts = type.GetCustomAttributes(typeof(T), inherit);             if (atts.Length == 0) return null;             return atts[0] as T;         }         /// <summary>         /// Gets the specified attribute for the assembly.         /// </summary>         /// <typeparam name="T"></typeparam>         /// <param name="asm"></param>         /// <returns></returns>         public static T GetAttribute<T>(this Assembly asm) where T : Attribute         {             if (asm == null) return null;             var atts = asm.GetCustomAttributes(typeof(T), false);             if (atts == null) return null;             if (atts.Length == 0) return null;             return (T)atts[0];         }         /// <summary>         /// Gets the specified attribute from the PropertyDescriptor.         /// </summary>         /// <typeparam name="T"></typeparam>         /// <param name="obj"></param>         /// <param name="inherit"></param>         /// <returns></returns>         public static T GetAttribute<T>(this object obj, bool inherit) where T : Attribute         {             if (obj == null) return null;             return obj.GetType().GetAttribute<T>(inherit);         }         /// <summary>         /// Gets the specified attribute for the assembly.         /// </summary>         /// <typeparam name="T"></typeparam>         /// <param name="val"></param>         /// <returns></returns>         public static T GetAttribute<T>(this Enum val) where T : Attribute         {             var fi = val.GetType().GetField(val.ToString());             var atts = fi.GetCustomAttributes(typeof(T), false);             if (atts.Length == 0) return null;             return (T)atts[0];         }         /// <summary>         /// Gets the description for the enumerated value.         /// </summary>         /// <param name="e"></param>         /// <returns></returns>         public static string GetDescription(this Enum e)         {             var att = GetAttribute<DescriptionAttribute>(e);             if (att == null) return "";             return att.Description;         }     } }