SOの質問に触発されました。Attributeクラスには、IsDefined()メソッド用のいくつかのオーバーロードがあります。対象となるのは、Assembly、Module、MemberInfo、ParameterInfoに適用される属性です。MemberInfoオーバーロードは、PropertyInfo、FieldInfo、EventInfo、MethodInfo、ConstructorInfoをカバーします。
これで、ほとんどのAttributeTargetsが処理されます。1つの大きな違いを除いて:Attribute.IsDefined(Type、Type)のオーバーロードがないため、属性がクラスで定義されているかどうかを確認できます。または、その問題の構造体、委任、または列挙型。
これが実際の問題ではないため、Type.GetCustomAttributes()で修正できます。しかし、すべてのBlahInfoタイプにもこれがあります。対称性の欠如に疑問を感じます。なぜこれがTypeの問題になるのか、はっきりとは言えません。継承の問題を推測しても、それは説明できません。ValueTypeを組み合わせることはリードになるかもしれませんが、それでも意味がありません。私は「彼らが忘れた」を買わない、彼らは決して買わない。
このオーバーロードが欠落しているのはなぜですか?
ICustomAttributeProvider
あまりにも理にかなっています。