如何访问常量或属性上的描述(Description)属性?
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
我也愿意接受其他方法的建议。
编辑: 我应该提到,我在这里看到了一个示例: 自动实现的属性支持属性吗?
但是,我正在寻找一种方法来访问描述属性,而不必将字符串文字输入到属性类型中,即,我不想这样做:
typeof(Group).GetProperty("UserExistsInGroup");
类似于扩展方法的东西;可以通过扩展方法返回枚举值上的描述属性,就像以下方法一样:
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";
}
}