Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les classes de l'espace de noms System.Reflection, conjointement avec System.Type, vous permettent d'obtenir des informations sur les assemblies chargés et les types définis en leur sein, tels que les classes, les interfaces, et les types de valeur (c'est-à-dire, les structures et les énumérations). Vous pouvez également utiliser la réflexion pour créer des instances de type au moment de l’exécution, et pour appeler et y accéder.
Les assemblys contiennent des modules, des modules contiennent des types et des types contiennent des membres. La réflexion fournit des objets qui encapsulent des assemblages, des modules et des types. Vous pouvez utiliser la réflexion pour créer dynamiquement une instance d’un type, lier le type à un objet existant ou obtenir le type à partir d’un objet existant. Vous pouvez ensuite appeler les méthodes du type ou accéder à ses champs et propriétés. Les utilisations classiques de la réflexion sont les suivantes :
- Permet Assembly de définir et de charger des assemblys, de charger des modules répertoriés dans le manifeste d’assembly et de localiser un type à partir de cet assembly et de créer une instance de celui-ci.
- Permet Module de découvrir des informations telles que l’assembly qui contient le module et les classes du module. Vous pouvez également obtenir toutes les méthodes globales ou d’autres méthodes spécifiques non globales définies sur le module.
- Utilisez ConstructorInfo pour découvrir des informations telles que le nom, les paramètres, les modificateurs d’accès (tels que
public
ouprivate
) et les détails de l’implémentation (commeabstract
ouvirtual
) d’un constructeur. Utilisez la méthode GetConstructors ou GetConstructor d’un Type pour appeler un constructeur spécifique. - Permet MethodInfo de découvrir des informations telles que le nom, le type de retour, les paramètres, les modificateurs d’accès et les détails d’implémentation (tels que
abstract
ouvirtual
) d’une méthode. Utilisez la méthode GetMethods ou GetMethod d’un Type pour appeler une méthode spécifique. - Permet FieldInfo de découvrir des informations telles que le nom, les modificateurs d’accès et les détails d’implémentation (par exemple
static
) d’un champ, et pour obtenir ou définir des valeurs de champ. - Permet EventInfo de découvrir des informations telles que le nom, le type de données du gestionnaire d’événements, les attributs personnalisés, le type déclarant et le type reflété d’un événement, et pour ajouter ou supprimer des gestionnaires d’événements.
- Permet PropertyInfo de découvrir des informations telles que le nom, le type de données, le type déclarant, le type réfléchi et l’état accessible en lecture seule ou accessible en écriture d’une propriété, et pour obtenir ou définir des valeurs de propriété.
- Permet ParameterInfo de découvrir des informations telles que le nom d’un paramètre, le type de données, si un paramètre est un paramètre d’entrée ou de sortie et la position du paramètre dans une signature de méthode.
- Utilisez CustomAttributeData pour découvrir des informations sur les attributs personnalisés lorsque vous travaillez dans le contexte MetadataLoadContext ou uniquement de réflexion (.NET Framework). CustomAttributeData vous permet d’examiner les attributs sans créer d’instances.
Les classes de l’espace System.Reflection.Emit de noms fournissent une forme spécialisée de réflexion qui vous permet de générer des types au moment de l’exécution.
La réflexion peut également être utilisée pour créer des navigateurs de type, ce qui permet aux utilisateurs de sélectionner des types, puis d’afficher les informations relatives à ces types.
Il existe d’autres utilisations pour la réflexion. Les compilateurs pour les langages tels que JScript utilisent la réflexion pour construire des tables de symboles. Les classes de l'espace de noms System.Runtime.Serialization utilisent la réflexion pour accéder aux données et déterminer les champs à reprendre. Les classes de l'espace de noms System.Runtime.Remoting utilisent la réflexion indirectement via la sérialisation.
Types au moment de l’exécution dans la réflexion
La réflexion fournit des classes, telles que Type et MethodInfo, pour représenter des types, des membres, des paramètres et d’autres entités de code. Toutefois, lorsque vous utilisez la réflexion, vous ne travaillez pas directement avec ces classes, dont la plupart sont abstraites (MustInherit
en Visual Basic). Au lieu de cela, vous travaillez avec des types fournis par le Common Language Runtime (CLR).
Par exemple, lorsque vous utilisez l’opérateur C# typeof
(GetType
en Visual Basic) pour obtenir un Type objet, l’objet est vraiment un RuntimeType
. RuntimeType
dérive de Type et fournit des implémentations de toutes les méthodes abstraites.
Ces classes runtime sont internal
(Friend
en Visual Basic). Ils ne sont pas documentés séparément de leurs classes de base, car leur comportement est décrit par la documentation de la classe de base.