Проверьте, есть ли у свойства DisplayNameAttribute

Я пытаюсь проверить, если свойство класса имеет DisplayNameAttribute. Я хотел бы проанализировать свойство и вернуть истину или ложь на основе этих критериев.

Это то, что я имею до сих пор:

Образец класса:

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.

1 ответ

Решение
 var t = typeof(SampleDTO);
 var pi = t.GetProperty("PropertyA");
 var hasAttr = Attribute.IsDefined(pi, typeof(DisplayName));
Другие вопросы по тегам