如何使用DisplayName检索属性名称?

时间:2015-02-02 12:50:53

标签: c# reflection

public class DoctorInfo    
{
     [DisplayName("form1[0].P1[0].Physician-Name[0]")]
     public string ProviderFullName { get; set; }
}

如果手头有DisplayName,我如何以编程方式获取属性名称“ProviderFullName”?

2 个答案:

答案 0 :(得分:0)

鉴于课程中DisplayName你可以get all the PropertyInfo members,然后对其进行迭代,看看其中任何一个是否使用MemberInfo.GetCustomAttributes具有DisplayName属性。

如果DisplayName匹配,请使用MemberInfo.Name property取回名称。

答案 1 :(得分:0)

您可以迭代属性和自定义属性 -

 PropertyInfo[] properties = typeof(DoctorInfo).GetProperties();
            foreach (PropertyInfo prop in properties)
            {
                object[] attrs = prop.GetCustomAttributes(true);

                foreach (object attr in attrs)
                {
                    DisplayNameAttribute displayName = attr as DisplayNameAttribute;
                    if (displayName != null)
                    {
                       var attributeName = displayName.DisplayName; // check if this matches what you want
                    string propertyName = prop.Name;                        }
                }
            }