A few extension methods to help out.....
// Project: Salient.Reflection
// http://salient.codeplex.com
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
public static class AttributeHelpers
{
/// <summary>
/// Returns first non-inherited custom attribute of type T
/// </summary>
public static T GetCustomAttribute<T>(this ICustomAttributeProvider provider)
where T : Attribute
{
return GetCustomAttribute<T>(provider, false);
}
/// <summary>
/// Returns first custom attribute of type T in the inheritance chain
/// </summary>
public static T GetCustomAttribute<T>(this ICustomAttributeProvider provider, bool inherited)
where T : Attribute
{
return provider.GetCustomAttributes<T>(inherited).FirstOrDefault();
}
/// <summary>
/// Returns all non-inherited custom attributes of type T
/// </summary>
public static List<T> GetCustomAttributes<T>(this ICustomAttributeProvider provider)
where T : Attribute
{
return GetCustomAttributes<T>(provider, false);
}
/// <summary>
/// Returns all custom attributes of type T in the inheritance chain
/// </summary>
public static List<T> GetCustomAttributes<T>(this ICustomAttributeProvider provider, bool inherited)
where T : Attribute
{
return provider.GetCustomAttributes(typeof (T), inherited).Cast<T>().ToList();
}
}
Technorati tags:
C#,
Reflection ,
CodeProject-Tip