in .NET, est la fonction d'attribut utilisé lors de la compilation ou du temps d'exécution ou des deux? Pouvez-vous me donner quelques exemples? P>
4 Réponses :
Les attributs sont compilés dans le code au moment de la compilation, mais ils sont souvent utilisés au moment de l'exécution comme des déclencheurs pour faire les choses différemment. P>
Le compilateur ajoute ce qu'on appelle les métadonnées à l'objet décoré avec un attribut. Ces métadonnées, créées via des attributs ou autrement, sont toutes accessibles au temps d'exécution à Thru
-1: Dans certains cas, des attributs affectent la compilation de manière significative. Par exemple, l'attribut conditionnel est principalement destiné à une utilisation pendant la compilation et peut déclencher des erreurs de compilateur si elle est utilisée de manière incorrecte.
Ouais tu as raison ... j'ai oublié ces cas ... obsolète est une autre.
Les attributs sont émis sous forme de métadonnées à l'assemblage à l'heure de la compilation. Ces métadonnées sont ensuite utilisées au moment de l'exécution via la réflexion - par exemple en utilisant getcustomattributes () code>
. p>
Certains attributs sont utilisés par le compilateur à l'heure de la compilation. Par exemple, le compilateur regarde le attributeUSAGeTribute code> < / a> Pour déterminer si un attribut peut être utilisé pour un objet spécifique. P>
Le compilateur utilise également l'obsolèteattribute à l'heure du compilateur.
la plupart em> sont utilisés uniquement au moment de l'exécution. Un nombre très limité est utilisé par le compilateur, y compris: p>
Il existe une gamme de choses comme En outre, des outils tels que PostSharp font des étapes supplémentaires post-compilées en fonction des attributs. P>
Il existe d'autres attributs que le compilateur peut ajouter aux types / méthodes générés (pour des méthodes d'anon / types, des blocs d'itérateurs, etc.). P>
[conditionnel (...)] code> - OMIT METHODE Appels par symboles de construction Li>
[obsolète (...)] code> - émet un avertissement / une erreur comme sortie de construction li>
[sérialisable] code> - est écrit comme un drapeau CLI LI>
[extension] code> - utilisé pour les méthodes d'extension li>
[attributUnage] code> - affecte comment les attributs sont appliqués li>
-
ul>
[montageversion] code>,
[montagefileversion] code> etc. qui sont utilisés par le compilateur lors de la création du fichier d'assemblage et des éléments comme
[InternalsVissibleto] code> qui affectent l'accessibilité. P>