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 に答える