检查 属性 是否具有 DisplayNameAttribute

Check if a property has a DisplayNameAttribute

我正在尝试验证 class 属性 是否具有 DisplayNameAttribute。我想根据该标准分析 属性 和 return 是真还是假。

这是我目前拥有的:

样本Class:

public class SampleDTO
{
    [DisplayName("Some Display Name")]
    public int propertyA { get; set; }

    public int propertyB { get; set; }
}

方法:

public static DataTable ToDataTable<T>(this List<T> iList)
{
    //(...)


    PropertyDescriptorCollection propertyDescriptorCollection = TypeDescriptor.GetProperties(typeof(T));

    for (int i = 0; i < propertyDescriptorCollection.Count; i++)
    {
        PropertyDescriptor propertyDescriptor = propertyDescriptorCollection[i];
        Type type = propertyDescriptor.PropertyType;

        if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
            type = Nullable.GetUnderlyingType(type);


        //check if property has a DisplayNameAttribute
        var att = type.GetCustomAttributes(typeof(DisplayNameAttribute), true);

        //if it has, add to datatable
        if (att != null || !att.Any())
        {
            //add to datatable...
        }

    }


    //(...)
}

我的问题:

//check if property has a DisplayNameAttribute
var att = type.GetCustomAttributes(typeof(DisplayNameAttribute), true);

//if it has, add to datatable
if (att != null || !att.Any())
{
    //add to datatable...
}

到目前为止,我无法成功检查 属性 是否具有 DisplayNameAttribute。

 var t = typeof(SampleDTO);
 var pi = t.GetProperty("PropertyA");
 var hasAttr = Attribute.IsDefined(pi, typeof(DisplayName));