1. ホーム
  2. c#

[解決済み】与えられた属性を持つプロパティのリストを取得する方法は?

2022-04-04 08:27:53

質問

タイプがあるんです。 t という属性を持つパブリックプロパティの一覧を取得したい。 MyAttribute . 属性には AllowMultiple = false を、このように。

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]

現在、私が持っているのはこれですが、もっと良い方法があるのではと思っています。

foreach (PropertyInfo prop in t.GetProperties())
{
    object[] attributes = prop.GetCustomAttributes(typeof(MyAttribute), true);
    if (attributes.Length == 1)
    {
         //Property with my custom attribute
    }
}

どうすれば改善できるのか?重複していたら申し訳ありません、反省スレが大量にあるのですが...かなりホットな話題のようですね。

どのように解決するのですか?

var props = t.GetProperties().Where(
                prop => Attribute.IsDefined(prop, typeof(MyAttribute)));

これにより、属性インスタンスを実体化する必要がなくなります。 GetCustomAttribute[s]() .