Inspiré d'une question SO. La classe Attribute a plusieurs surcharges pour la méthode IsDefined () . Sont couverts les attributs appliqués à Assembly, Module, MemberInfo, ParameterInfo. La surcharge MemberInfo couvre PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.
Cela prend en charge la plupart des AttributeTargets. Sauf pour un gros: il n'y a pas de surcharge pour Attribute.IsDefined (Type, Type) afin que vous puissiez vérifier si un attribut est défini sur une classe. Ou une structure, un délégué ou une énumération d'ailleurs.
Non pas que ce soit un réel problème, Type.GetCustomAttributes () peut le résoudre. Mais tous les types BlahInfo l'ont aussi. Je m'interroge sur le manque de symétrie. Je ne peux pas comprendre pourquoi ce serait un problème pour Type. Deviner un problème d'héritage ne me l'explique pas. Avoir ValueType dans le mix peut être une piste, cela n'a toujours pas de sens. Je n'achète pas "ils ont oublié", ils ne le font jamais.
Pourquoi cette surcharge manque-t-elle?
la source
ICustomAttributeProvider
aurait également beaucoup de sens.