7 votes

.NET : Quand les attributs sont-ils instanciés et puis-je obtenir une référence au type qu'ils décorent ?

Deux questions sur les attributs :

  1. Quand les classes d'attributs sont-elles instanciées ? Lors du premier accès au type, ou au début de l'exécution ?
  2. À l'intérieur de la classe d'attribut, puis-je savoir pour quel type l'attribut a été instancié ?

L'idée est que je veux faire une liste de toutes les classes de mon assemblage auxquelles mon attribut est appliqué. Je pourrais bien sûr les parcourir toutes avec la réflexion et la vérification, mais il serait plus agréable que l'attribut puisse simplement être ajouté à une liste statique globale lors de l'instanciation.

12voto

Mehrdad Afshari Points 204872

Les attributs sont no automatiquement instancié au démarrage de l'application. La seule façon de voir quels types (ou tout autre élément IL, d'ailleurs) ont l'attribut appliqué est d'itérer tout et de vérifier un par un. Par conséquent, les attributs ne peuvent pas prendre automatiquement le contrôle d'un programme.

Il s'agit essentiellement de métadonnées attachées à certains éléments. Leur constructeur est appelé lorsque la réflexion instancie la classe d'attribut qui représente l'attribut au moment de l'exécution. Cela ne se produit que lorsque vous demandez à la réflexion de le faire (en utilisant la commande Type.GetCustomAttributes méthode.)

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