我有一个自定义属性应用于类中的某些属性。检索已应用属性的属性列表的最有效方法是什么?您是否必须反映对象中的属性列表,然后查询每个属性以查看属性是否已应用?
public class Reportable : Attribute
{
}
public class Report
{
[Reportable("WOID")]
public string ClientWOID { get; set; }
[Reportable("ClientName")]
public string ClientName { get; set; }
}
答案 0 :(得分:3)
你将不得不使用反射(所以非常怀疑):
var props = typeof(Report).GetProperties()
.Where(p => p.GetCustomAttributes(typeof(Reportable), false)
.Any());
foreach (var prop in props)
{
Console.WriteLine(prop.Name);
}