Réflexion (C#)Reflection (C#)

La réflexion fournit des objets (de type Type ) qui décrivent les assemblys, les modules et les types.Reflection provides objects (of type Type) that describe assemblies, modules, and 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 et invoquer ses méthodes ou accéder à ses champs et propriétés.You can use reflection to dynamically create an instance of a type, bind the type to an existing object, or get the type from an existing object and invoke its methods or access its fields and properties. Si vous utilisez des attributs dans votre code, la réflexion vous permet d’y accéder.If you are using attributes in your code, reflection enables you to access them. Pour plus d’informations, consultez Attributs.For more information, see Attributes.

Voici un exemple simple de réflexion à l’aide de la GetType() méthode, héritée par tous les types de la Object classe de base, pour obtenir le type d’une variable :Here's a simple example of reflection using the GetType() method - inherited by all types from the Object base class - to obtain the type of a variable:

Notes

Veillez à ajouter using System; et using System.Reflection; en haut de votre fichier . cs .Make sure you add using System; and using System.Reflection; at the top of your .cs file.

// Using GetType to obtain type information:
int i = 42;
Type type = i.GetType();
Console.WriteLine(type);

La sortie est : System.Int32 .The output is: System.Int32.

L’exemple suivant utilise la réflexion pour obtenir le nom complet de l’assembly chargé.The following example uses reflection to obtain the full name of the loaded assembly.

// Using Reflection to get information of an Assembly:
Assembly info = typeof(int).Assembly;
Console.WriteLine(info);

La sortie est : System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e .The output is: System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e.

Notes

Les mots clés C# protected et internal n’ont aucune signification en langage intermédiaire et ne sont pas utilisés dans les API de réflexion.The C# keywords protected and internal have no meaning in IL and are not used in the reflection APIs. Les termes correspondants en langage intermédiaire sont Family et Assembly.The corresponding terms in IL are Family and Assembly. Pour identifier une méthode internal à l’aide de la réflexion, utilisez la propriété IsAssembly.To identify an internal method using reflection, use the IsAssembly property. Pour identifier une méthode protected internal, utilisez IsFamilyOrAssembly.To identify a protected internal method, use the IsFamilyOrAssembly.

Vue d’ensemble de la réflexionReflection overview

La réflexion est utile dans les situations suivantes :Reflection is useful in the following situations:

Pour plus d'informations :For more information:

Voir aussiSee also