2012-03-09 64 views
2

我有一个自定义属性应用于类中的某些属性。检索具有应用属性的属性列表的最有效方法是什么?你是否必须反思对象中的属性列表,然后查询每个属性是否被应用?列出具有应用属性的对象属性

public class Reportable : Attribute 
{ 
} 

public class Report 
{ 
    [Reportable("WOID")] 
    public string ClientWOID { get; set; } 

    [Reportable("ClientName")] 
    public string ClientName { get; set; } 
} 

回答

3

你将不得不使用反射(所以你怀疑差不多):

var props = typeof(Report).GetProperties() 
          .Where(p => p.GetCustomAttributes(typeof(Reportable), false) 
             .Any()); 

foreach (var prop in props) 
{ 
    Console.WriteLine(prop.Name); 
} 
+0

男孩真快。当我的互联网连接死亡,我回来了,我看到一个答案接受和一切! – gideon 2012-03-09 04:31:32