Comment accéder à l'attribut Description sur une propriété ou une const en C #?

Comment accédez-vous à la Description de la propriété sur un const ou une propriété, c'est à dire,

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;

}

ou

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

}

Dans l'appel de la classe, j'aimerais accéder à la Description des biens, c'est à dire,

int x = Group.UserExistsInGroup;
string description = Group.UserExistsInGroup.GetDescription(); //or similar

Je suis ouvert à des idées à d'autres méthodes.

EDIT:
Je devrais avoir mentionné le fait que j'ai vu un exemple fourni ici:
Ne les propriétés implémentées automatiquement soutien attributs?

Cependant, je suis à la recherche d'une méthode pour accéder à la description de l'attribut sans avoir à entrer un littéral chaîne dans le type de propriété, c'est à dire, je préfère ne pas le faire:

typeof(Group).GetProperty("UserExistsInGroup");

Quelque chose le long des lignes d'une Méthode d'Extension; similaire à la méthode suivante qui sera de retour de l'attribut de Description sur un Enum via une Méthode d'Extension:

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";
    }
}

source d'informationauteur Metro Smurf | 2009-03-30