Как получить DisplayAttribute свойства Reflection?
У меня есть метод Helper, подобный этому, чтобы получить мне PropertyName (попытка избежать магических строк)
public static string GetPropertyName<T>(Expression<Func<T>> expression)
{
var body = (MemberExpression) expression.Body;
return body.Member.Name;
}
Однако иногда мои Имена свойств также не называются хорошо. Поэтому я бы предпочел использовать DisplayAttribute.
[Display(Name = "Last Name")]
public string Lastname {get; set;}
Помните, что я использую Silverlight 4.0. Я не смог найти обычное атрибут DisplayAttributeName пространства имен для этого.
Как я могу изменить свой метод, чтобы вместо этого читать атрибут (если он доступен)?
Большое спасибо,
Ответы
Ответ 1
Это должно работать:
public static string GetPropertyName<T>(Expression<Func<T>> expression)
{
MemberExpression propertyExpression = (MemberExpression)expression.Body;
MemberInfo propertyMember = propertyExpression.Member;
Object[] displayAttributes = propertyMember.GetCustomAttributes(typeof(DisplayAttribute), true);
if(displayAttributes != null && displayAttributes.Length == 1)
return ((DisplayAttribute)displayAttributes[0]).Name;
return propertyMember.Name;
}