How do you access the Description property on either a const or a property, i.e.,
public static class Group { [Description( 'Specified parent-child relationship already exists.' )] public const int ParentChildRelationshipExists = 1; [Description( 'User is already a member of the group.' )] public const int UserExistsInGroup = 2; }
or
public static class Group { [Description( 'Specified parent-child relationship already exists.' )] public static int ParentChildRelationshipExists { get { return 1; } } [Description( 'User is already a member of the group.' )] public static int UserExistsInGroup { get { return 2; } } }
In the calling class I’d like to access the Description property, i.e.,
int x = Group.UserExistsInGroup; string description = Group.UserExistsInGroup.GetDescription(); // or similar
I’m open to ideas to other methodologies as well.
EDIT: I should have mentioned that I’ve seen an example provided here: Do auto-implemented properties support attributes?
However, I’m looking for a method to access the description attribute without having to enter a string literal into the property type, i.e., I’d rather not do this:
typeof(Group).GetProperty('UserExistsInGroup');
Something along the lines of an Extension Method; similar to the following method that will return the Description attribute on an Enum via an Extension Method:
public static String GetEnumDescription( this Enum obj ) { try { System.Reflection.FieldInfo fieldInfo = obj.GetType().GetField( obj.ToString() ); object[] attribArray = fieldInfo.GetCustomAttributes( false ); if (attribArray.Length > 0) { var attrib = attribArray[0] as DescriptionAttribute; if( attrib != null ) return attrib.Description; } return obj.ToString(); } catch( NullReferenceException ex ) { return 'Unknown'; } }
You can call MemberInfo.GetCustomAttributes() to get any custom attributes defined on a member of a
Type. You can get theMemberInfofor the property by doing something like this: