Jak uzyskać dostęp do właściwości Opis albo na const lub mienia, tjJak uzyskać dostęp do atrybutu Opis na właściwości lub const w C#?
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;
}
lub
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; }
}
}
W klasie wywołującego Chciałbym uzyskać dostęp do właściwości opis, to znaczy,
int x = Group.UserExistsInGroup;
string description = Group.UserExistsInGroup.GetDescription(); // or similar
Jestem otwarty na pomysły także dla innych metodologii.
EDIT: Powinienem wspomnieć, że widziałem przykładem warunkiem tutaj: Do auto-implemented properties support attributes?
jednak szukam sposobu uzyskania dostępu do atrybut opis bez konieczności podawania ciąg dosłownego do typu nieruchomości, tj. wolałbym tego nie robić:
typeof(Group).GetProperty("UserExistsInGroup");
Coś podobnego do metody rozszerzającej; podobna do następującej metody, która zwróci atrybut Opis na enum poprzez metodę rozszerzenia:
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";
}
}
W odpowiedzi na Pana EDIT: Zobacz ten http://www.codeproject.com/Articles/28514/Strong-Reflection-without -magic-smings jako sposób na bezpieczne uzyskanie informacji o nieruchomości. – walpen