1

我有一个 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) 

我该怎么做?

4

2 回答 2

8

只需使用 LINQ 和一个Where子句MemberInfo.IsDefined

var myList = typeof(Issuance).GetProperties()
                             .Where(p => p.IsDefined(typeof(MyAttr), false);
于 2012-07-30T14:27:50.493 回答
0

http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.getcustomattributes.aspx

试试这个 - 基本上对属性做一个 foreach ,看看你是否得到每个属性的属性类型。如果这样做,该属性具有以下属性:

例如

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
}
于 2012-07-30T14:30:53.293 回答