Inspiré par une question SO. La classe Attribute a plusieurs surcharges pour la méthode IsDefined(). Couvertes sont des attributs appliqués à Assembly, Module, MemberInfo, ParameterInfo. La surcharge MemberInfo couvre PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.Pourquoi est-ce que Attributes.IsDefined() manque des surcharges?
Cela prend en charge la plupart des AttributeTargets. Sauf pour un biggy: il n'y a pas de surcharge pour Attribute.IsDefined (Type, Type) de sorte que vous pouvez vérifier si un attribut est défini sur une classe. Ou un struct, délégué ou enum pour cette question.
Ce n'est pas un problème réel, Type.GetCustomAttributes() peut résoudre ce problème. Mais tous les types BlahInfo l'ont aussi. Je m'interroge sur le manque de symétrie. Je ne peux pas mettre le doigt sur pourquoi cela serait un problème pour Type. Deviner un problème d'héritage ne me l'explique pas. Avoir ValueType dans le mélange pourrait être une piste, n'a toujours pas de sens. Je n'achète pas "ils ont oublié", ils ne le font jamais.
Pourquoi cette surcharge est-elle absente?
La surcharge de 'ICustomAttributeProvider' aurait aussi beaucoup de sens. –