vendredi 15 mars 2024

Reflexion


La réflexion (Reflection) en C# est une fonctionnalité qui permet à un programme d'inspecter et d'interagir dynamiquement avec des types, des objets, des méthodes, des propriétés, etc., au moment de l'exécution plutôt qu'au moment de la compilation. Elle offre un moyen puissant d'explorer et de manipuler la structure d'un programme C# à un niveau élevé.

Les principales classes utilisées pour effectuer des opérations de réflexion se trouvent dans l'espace de noms `System.Reflection`. Voici quelques concepts clés liés à la réflexion en C# :

1. **`Type` :** La classe `Type` permet d'obtenir des informations sur un type, telles que ses méthodes, propriétés, champs, attributs, etc.

Exemple :

```csharp

Type type = typeof(MyClass);

MethodInfo[] methods = type.GetMethods();

PropertyInfo[] properties = type.GetProperties();

```

2. **`Activator` :** La classe `Activator` permet de créer une instance d'un type, même si le type n'est pas connu au moment de la compilation.

Exemple :

```csharp

Type type = typeof(MyClass);

object instance = Activator.CreateInstance(type);

```

3. **`MethodInfo` :** La classe `MethodInfo` permet d'obtenir des informations spécifiques sur une méthode.

Exemple :

```csharp

MethodInfo method = typeof(MyClass).GetMethod("MyMethod");

```

La réflexion est souvent utilisée dans des scénarios avancés tels que la création dynamique d'objets, la découverte et l'appel dynamique de méthodes, l'inspection des attributs, la manipulation dynamique de propriétés, etc. Cependant, en raison de sa nature basée sur l'inspection, elle peut entraîner des performances moindres par rapport à un code statiquement lié, car certaines vérifications doivent être effectuées au moment de l'exécution. Il est recommandé d'utiliser la réflexion de manière judicieuse, car elle peut rendre le code plus complexe et moins lisible.

Aucun commentaire:

Enregistrer un commentaire