Réflexion (Guide de programmation C#)
Mise à jour : novembre 2007
La réflexion fournit des objets (de type Type) qui décrivent les assemblys, les modules et les types. Vous pouvez utiliser la réflexion pour créer dynamiquement une instance d'un type, lier le type à un objet existant ou l'obtenir à partir d'un objet existant et appeler ses méthodes ou accéder à ses champs et propriétés. Si vous utilisez des attributs dans votre code, la réflexion vous permet d'y accéder. Pour plus d'informations, consultez Attributs (Guide de programmation C#).
Voici un exemple simple de réflexion utilisant la méthode statique GetType- héritée par tous les types de la classe de base Object - pour obtenir le type d'une variable :
// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);
Le résultat est le suivant :
System.Int32
Dans cet exemple, la réflexion est utilisée pour obtenir le nom complet d'un assembly chargé :
// Using Reflection to get information from an Assembly:
System.Reflection.Assembly o = System.Reflection.Assembly.Load("mscorlib.dll");
System.Console.WriteLine(o.GetName());
Le résultat est le suivant :
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Remarque : |
---|
Les mots clés protected et internal de C# n'ont aucune signification en IL (Intermediate Language) et ne sont pas utilisés dans les API de réflexion. Les termes correspondants en IL sont Famille et Assembly. Pour identifier une méthode internal à l'aide de la réflexion, utilisez la propriété IsAssembly. Pour identifier une méthode protected internal, utilisez IsFamilyOrAssembly. |
Vue d'ensemble de la réflexion
La réflexion est utile dans les situations suivantes :
Pour accéder aux attributs dans les métadonnées de votre programme. Consultez la rubrique « Accès à des attributs à l'aide de la réflexion ».
Pour examiner et instancier des types dans un assembly.
Pour construire de nouveaux types pendant l'exécution. Utilisez des classes dans System.Reflection.Emit.
Pour exécuter la liaison tardive, accéder aux méthodes sur les types créés au moment de l'exécution. Consultez la rubrique « Chargement et utilisation dynamiques des types ».
Rubriques connexes
Pour plus d'informations
Spécification du langage C#
Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.
1.12 Attributs
7.5.11 Opérateur typeof
Voir aussi
Concepts
Référence
Domaines d'application (Guide de programmation C#)
Assemblys et le Global Assembly Cache (Guide de programmation C#)