Pourquoi Atsortingbutes.IsDefined () manque-t-il des surcharges?

Inspiré par une question SO. La classe Atsortingbute a plusieurs surcharges pour la méthode IsDefined () . Les atsortingbuts couverts sont appliqués à Assembly, Module, MemberInfo, ParameterInfo. La surcharge MemberInfo couvre PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.

Cela prend en charge la plupart des AtsortingbuteTargets. Sauf pour une biggy: il n’y a pas de surcharge pour Atsortingbute.IsDefined (Type, Type) afin que vous puissiez vérifier si un atsortingbut est défini sur une classe. Ou une structure, un délégué ou un enum pour cela.

Ce n’est pas un problème réel, Type.GetCustomAtsortingbutes () peut résoudre ce problème. Mais tous les types BlahInfo ont cela aussi. Je m’interroge sur le manque de symésortinge. Je ne peux pas dire pourquoi ce serait un problème pour Type. Deviner un problème d’inheritance ne m’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 est-elle manquante?

System.Atsortingbute.IsDefined(MemberInfo element, Type atsortingbuteType, bool inherit) et System.Type dérivent de System.Reflection.MemberInfo .

Un assembly, qui est le conteneur de niveau supérieur de tout assembly .NET, possède un ou plusieurs modules. Chaque module contenant alors des types et des types peut avoir des membres tels que des propriétés, des méthodes ou même d’autres types (types nesteds). C’est pourquoi System.Type dérive de MemberInfo pour que le modèle d’object permette aux types de fonctionner comme des conteneurs toutes les choses membres, y compris les autres types.