Как получить доступ к свойству Description в const или свойстве, т. Е.
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;
}
или
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; }
}
}
В классе вызова я хотел бы получить доступ к свойству Description, т.е.
int x = Group.UserExistsInGroup;
string description = Group.UserExistsInGroup.GetDescription(); // or similar
Я открыт для идей и для других методологий.
EDIT:
Я должен был упомянуть, что видел пример, приведенный здесь:
Поддерживают ли автоматически реализованные свойства атрибуты?
Однако я ищу способ доступа к атрибуту description без необходимости ввода строкового литерала в тип свойства, то есть я бы предпочел не делать этого:
typeof(Group).GetProperty("UserExistsInGroup");
Нечто в духе метода расширения; аналогично следующему методу, который возвращает атрибут Description в Enum через метод расширения:
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";
}
}