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;
}
}
}
Related examples in the same category
| 1. | Obtaining member information from a class. | | |
| 2. | Print Property Info | | |
| 3. | Type.GetProperties | | |
| 4. | IsClass, Namespace, FullName, IsAbstract, IsPublic, IsInterface, IsEnum | | |
| 5. | Determines whether the member is an indexed property. | | |
| 6. | Determines whether the property is an indexed property. | | |
| 7. | Get Fields And Properties | | |
| 8. | Get Properties | | |
| 9. | Gets a property's value | | |
| 10. | Gets a property's type | | |
| 11. | Gets a property's parent object | | |
| 12. | Get Property from Property path | | |
| 13. | Copies a field value | | |
| 14. | Get the names of all the properties of an object | | |
| 15. | Determine if a property exists in an object | | |
| 16. | Get the type of the Property. | | |
| 17. | Set the value of a property that has been declared as an Enum type using reflection | | |
| 18. | Determine if a property's Type is an enum | | |
| 19. | Return true> if the specified property name identifies a readable property on the specified object; | | |
| 20. | Return true> if the specified property name identifies a writeable property on the specified object; | | |
| 21. | Integration Property To String | | |
| 22. | Gets the value of a static property on a specific type. | | |
| 23. | Gets the name of the property held within the expression | | |
| 24. | Get a property value given its name | | |
| 25. | Gets the attributes for this property. | | |
| 26. | Gets a value indicating whether the property can be read. | | |
| 27. | Gets a value indicating whether the property can be written to. | | |
| 28. | Returns an array whose elements reflect the public, non-public get, set, and other accessors | | |
| 29. | Returns the public or non-public get accessor for this property. | | |
| 30. | Get an array of all the index parameters for the property. | | |
| 31. | Get the set accessor for this property. | | |
| 32. | Returns the value of the property with optional index values for indexed properties. | | |
| 33. | Gets a MemberTypes value indicating that this member is a property. | | |
| 34. | Gets the type of this property. | | |
| 35. | Sets the property value for the given object to the given value. | | |
| 36. | Searches for the specified property, using the specified binding constraints. | | |
| 37. | Searches for the public property with the specified name and return type. | | |
| 38. | Get Non-Pubic Property | | |
| 39. | Set Non-Pubic Property | | |
| 40. | Gets a string with all of the properties that are not null. | | |
| 41. | Get Writable Properties | | |
| 42. | Get Property Name | | |