Inspirado en una pregunta SO. La clase Attribute tiene varias sobrecargas para el método IsDefined () . Los atributos cubiertos se aplican a Ensamblaje, Módulo, Información de miembro, Información de parámetro. La sobrecarga de MemberInfo cubre PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.
Eso se encarga de la mayoría de los AttributeTargets. Excepto por un biggy: no hay sobrecarga para Attribute.IsDefined (Type, Type) para que pueda verificar si un atributo está definido en una clase. O una estructura, delegado o enumeración para el caso.
No es que este sea un problema real, Type.GetCustomAttributes () puede solucionarlo. Pero todos los tipos de BlahInfo también tienen esto. Me pregunto por la falta de simetría. No puedo señalar por qué esto sería un problema para Type. Adivinar un problema de herencia no me lo explica. Tener ValueType en la mezcla puede ser una ventaja, aún no tiene sentido. No compro "se olvidaron", nunca lo hacen.
¿Por qué falta esta sobrecarga?
ICustomAttributeProvider
tendría mucho sentido.