我有一个像这样的 Helper 方法来获取 PropertyName(试图避免使用魔法字符串)
public static string GetPropertyName<T>(Expression<Func<T>> expression)
{
var body = (MemberExpression) expression.Body;
return body.Member.Name;
}
但是有时我的 PropertyNames 也没有很好地命名。所以我宁愿使用 DisplayAttribute。
[Display(Name = "Last Name")]
public string Lastname {get; set;}
请注意我使用的是 Silverlight 4.0。我找不到通常的命名空间 DisplayAttributeName 属性。
如何更改我的方法以改为读取属性的属性(如果可用)?
非常感谢,
最佳答案
这应该有效:
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;
}
关于c# - 如何通过反射获取属性的 DisplayAttribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5499459/