Réflexion (C# et Visual Basic)

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 Extension des métadonnées à l'aide des attributs.

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: 
Dim i As Integer = 42
Dim type As System.Type = i.GetType()
System.Console.WriteLine(type)
// 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 l'exemple suivant, la réflexion est utilisée pour obtenir le nom complet de l'assembly chargé :

' Using Reflection to get information from an Assembly: 
Dim info As System.Reflection.Assembly = GetType(System.Int32).Assembly
System.Console.WriteLine(info)
// Using Reflection to get information from an Assembly:
System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);

Le résultat est le suivant :

mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Notes

Les mots clés C# protected et internal 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 :

Rubriques connexes

Pour plus d'informations :

Voir aussi

Concepts

Guide de programmation C#

Autres ressources

Guide de programmation Visual Basic

Domaines d'application (C# et Visual Basic)

Assemblys dans le Common Language Runtime