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 | | |