Inspirado por uma pergunta SO. A classe Attribute possui várias sobrecargas para o método IsDefined () . Cobertos são os atributos aplicados a Assembly, Module, MemberInfo, ParameterInfo. A sobrecarga MemberInfo abrange PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.
Isso cuida da maioria dos AttributeTargets. Exceto por um biggy: não há sobrecarga para Attribute.IsDefined (Type, Type) para que você possa verificar se um atributo está definido em uma classe. Ou uma estrutura, delegado ou enum para esse assunto.
Não que isso seja um problema real, Type.GetCustomAttributes () pode corrigir isso. Mas todos os tipos de BlahInfo também têm isso. Eu me pergunto pela falta de simetria. Não sei por que isso seria um problema para o Type. Adivinhar um problema de herança não me explica isso. Ter ValueType no mix pode ser uma vantagem, ainda não faz sentido. Eu não compro "eles esqueceram", eles nunca compram.
Por que essa sobrecarga está faltando?
ICustomAttributeProvider
faria muito sentido também.