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

La réflexion fournit des objets (de type Type) qui décrivent des assemblys, des modules et des 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 utilisant la méthode statique GetType, héritée par tous les types à partir de la classe de base Object, pour obtenir le type d’une variable :Here's a simple example of reflection using the static method GetType - inherited by all types from the Object base class - to obtain the type of a variable:

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

La sortie est la suivante :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 from an Assembly:  
System.Reflection.Assembly info = typeof(System.Int32).Assembly;  
System.Console.WriteLine(info);  

La sortie est la suivante :The output is:

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

Note

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