2016-12-03 7 views
1

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

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

Sample Класс:

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)); 
+0

Право понятие, но более соответствует на вопрос OP, он просто должен заменить 'уаг ATT = type.GetCustomAttributes (TypeOf (DisplayNameAttribute), правда);' 'с вар hasAtt = Attribute.IsDefined (типа, TypeOf (DisplayNameAttribute)); ' –

+0

Я так не думаю, потому что тип его кода вернет' Int32', и поэтому он проверяет, определен ли атрибут на 'Int32'. – CodingYoshi

+0

пятно на @CodingYoshi :) tnx – Ricky

 Смежные вопросы

  • Нет связанных вопросов^_^