11

重複の可能性:
特定の属性を持つプロパティのリストを取得する方法は?

このようなカスタムクラスがあります

public class ClassWithCustomAttributecs
{
    [UseInReporte(Use=true)]
    public int F1 { get; set; }

    public string F2 { get; set; }

    public bool F3 { get; set; }

    public string F4 { get; set; }
}

カスタム属性がありますUseInReporte:

[System.AttributeUsage(System.AttributeTargets.Property ,AllowMultiple = true)]
public class UseInReporte : System.Attribute
{
    public bool Use;

    public UseInReporte()
    {
        Use = false;
    }
}

[UseInReporte(Use=true)]いいえ、リフレクションを使用してこれを行う方法を持つすべてのプロパティを取得したいですか?

ありがとう

4

1 に答える 1

19
List<PropertyInfo> result =
    typeof(ClassWithCustomAttributecs)
    .GetProperties()
    .Where(
        p =>
            p.GetCustomAttributes(typeof(UseInReporte), true)
            .Where(ca => ((UseInReporte)ca).Use)
            .Any()
        )
    .ToList();

もちろんtypeof(ClassWithCustomAttributecs)、あなたが扱っている実際のオブジェクトに置き換える必要があります。

于 2012-10-29T12:18:58.947 に答える