我有3个属性的课程。
class Issuance
{
[MyAttr]
virtual public long Code1 { get; set; }
[MyAttr]
virtual public long Code2 { get; set; }
virtual public long Code3 { get; set; }
}
我需要通过自定义属性([MyAttr]
)在此类中选择一些属性。
我使用GetProperties()
但这会返回所有属性。
var myList = new Issuance().GetType().GetProperties();
//Count of result is 3 (Code1,Code2,Code3) But count of expected is 2(Code1,Code2)
我该怎么做?
答案 0 :(得分:8)
只需使用MemberInfo.IsDefined
使用LINQ和Where
子句:
var myList = typeof(Issuance).GetProperties()
.Where(p => p.IsDefined(typeof(MyAttr), false);
答案 1 :(得分:0)
http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.getcustomattributes.aspx
试试这个 - 基本上对属性做一个foreach,看看你是否找回了每个属性的属性类型。如果这样做,该属性具有以下属性:
e.g。
foreach(var propInfo in new Issuance().GetType().GetProperties())
{
var attrs = propInfo.GetCustomAttributes(typeof(MyAttr), true/false); // Check docs for last param
if(attrs.Count > 0)
// this is one, do something
}