gpt4 book ai didi

c# - 如何通过反射获取属性的 DisplayAttribute?

转载 作者:可可西里 更新时间:2023-11-01 08:19:23 26 4
gpt4 key购买 nike

我有一个像这样的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com