Как вы получаете доступ к свойству 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: Я должен был упомянуть, что я видел пример, приведенный здесь: Имеют ли атрибуты, поддерживающие автообновление, атрибуты?
Однако я ищу способ доступа к атрибуту описания без необходимости вводить строковый литерал в тип свойства, то есть я бы предпочел не делать этого:
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";
}
}