163 votes

Pourquoi est-Attributes.IsDefined() surcharges manquants ?

Inspiré par une SORTE de question. L'Attribut de classe possède plusieurs surcharges de la IsDefined() méthode. Sont couverts les attributs appliqués à l'Assemblée, Module, MemberInfo, ParameterInfo. Le MemberInfo surcharge couvre PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.

Qui prend soin de la plupart de la AttributeTargets. Sauf pour une biggy: il n'y a pas de surcharge pour l'Attribut.IsDefined(Type, Type), de sorte que vous pouvez vérifier si un attribut est défini sur une classe. Ou d'une structure, d'un délégué ou d'enum.

Non que ce soit un réel problème, Type.GetCustomAttributes() peut résoudre ce problème. Mais tous les BlahInfo types de ont aussi. J'ai été surpris par le manque de symétrie. Je ne peux pas mettre le doigt sur pourquoi ce serait un problème pour le Type. Devinant un héritage problème de ne pas me l'expliquer. Ayant ValueType dans le mélange peut être un chef de file, n'a pas de sens. Je n'achète pas "ils ont oublié, ils ne le font jamais.

Pourquoi est-ce surcharge manquant?

169voto

John Leidegren Points 21951

Il y a un et dérive de `` .

Un assembly, qui est le conteneur de niveau supérieur de n’importe quel assembly .NET a un ou plusieurs modules. Chaque module contient alors les types et les types peuvent avoir des membres tels que propriétés, méthodes ou même d’autres types (types imbriqués). C’est pourquoi dérive de afin que le modèle objet permet pour les types de travailler en tant que conteneurs tous les membres de choses, y compris d’autres types.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X