Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Réflexion de Base | Génériques et Réflexion
C# Avancé Avec .NET
course content

Contenu du cours

C# Avancé Avec .NET

C# Avancé Avec .NET

1. Introduction au Développement de Bureau avec .NET
2. GUI Interactif
3. Threading
4. Génériques et Réflexion

book
Réflexion de Base

Dans ce chapitre, nous couvrirons les fonctionnalités de base et importantes de la réflexion qui pourraient être utiles dans le développement Web et UI avec C#.

Obtenir les Types d'Objets à l'Exécution

La première fonctionnalité est celle que nous avons déjà explorée dans le dernier chapitre. C'est la méthode GetType. La méthode GetType nous donne le type de n'importe quel objet. Cela peut être utile lorsque nous voulons prendre des décisions basées sur les types d'objets :

cs

index

copy
12345678910
static float ExampleMethod(object value) { if(value.GetType() == typeof(int)) { return (float) value * 2; } return (float) value; }

Il est important de noter que nous ne pouvons pas utiliser la fonction typeof avec des objets, mais plutôt avec des noms de classes :

cs

index

copy
1234
int value = 10; typeof(value) // Incorrect typeof(int) // Correct, returns "System.Int32" typeof(long) // Correct, returns "System.Int64"

Il existe une classe appelée Type qui est définie dans l'espace de noms System.Reflection. Nous pouvons créer des variables de type Type et stocker le résultat de GetType ou typeof dans ces variables :

cs

index

copy
12
Type exampleVar1 = value.GetType(); Type exampleVar2 = typeof(int);

La fonction typeof n'est pas exactement la même que la méthode GetType(). Les deux renvoient une instance de Type, cependant, typeof renvoie l'instance de Type d'une classe au temps de compilation, tandis que la méthode GetType() renvoie l'instance de Type d'un objet au temps d'exécution. Cela est dû au fait que lors de l'utilisation de typeof(int), le programme sait déjà essentiellement que le type de données est int, il doit simplement le traduire en une instance de Type. Alors que dans le cas de value.GetType(), le programme doit déterminer le type de l'objet value.

Obtenir une liste de toutes les propriétés d'un type

Les objets Type ont une méthode appelée GetProperties qui peut récupérer la liste de toutes les propriétés publiques dans le type cible.

Les références de propriété peuvent être stockées dans un tableau de type PropertyInfo. La classe PropertyInfo est définie dans l'espace de noms System.Reflection et possède une variété d'attributs et de méthodes utiles.

Une référence à une propriété spécifique unique peut également être récupérée, en utilisant la méthode GetProperty.

La méthode GetProperty renverra la propriété qui correspond au propertyName. Sinon, elle renvoie null.

Obtenir une Liste de toutes les Méthodes d'un Type

Nous pouvons obtenir une liste de toutes les méthodes d'un type spécifique en appelant la méthode GetMethods de son instance Type.

Les références de méthode peuvent être stockées dans un tableau de type MethodInfo qui est également défini dans l'espace de noms System.Reflection.

cs

index

copy
1
MethodInfo[] methods = exampleType.GetMethods();

Nous pouvons également récupérer une seule méthode d'une classe en utilisant GetMethod :

cs

index

copy
1
MethodInfo method = exampleType.GetMethod("methodName");

La méthode GetMethod renvoie la première méthode qui correspond au nom methodName. S'il n'y a pas de telle méthode, elle renvoie null.

La classe MethodInfo a une méthode appelée Invoke qui prend les arguments suivants :

cs

index

copy
1
Invoke(objectReference, arguments);

Ici, objectReference doit être un objet du type dont provient la méthode. Les arguments peuvent être représentés soit par null en cas d'absence d'arguments, soit par un tableau de type object. Par exemple :

cs

index

copy
12
method.Invoke(exampleObject, null); method.Invoke(exampleObject, new object[] { "first", "second", 1, 2, 3.4f, 5.67, true });

1. Que fait la méthode GetType en C# ?

2. Comment pouvez-vous obtenir une liste de toutes les propriétés d'un type en utilisant la réflexion ?

3. Quelle est la méthode correcte pour invoquer une méthode qui a deux arguments de type string et int respectivement ?

Que fait la méthode GetType en C# ?

Que fait la méthode GetType en C# ?

Sélectionnez la réponse correcte

Comment pouvez-vous obtenir une liste de toutes les propriétés d'un type en utilisant la réflexion ?

Comment pouvez-vous obtenir une liste de toutes les propriétés d'un type en utilisant la réflexion ?

Sélectionnez la réponse correcte

Quelle est la méthode correcte pour invoquer une méthode qui a deux arguments de type `string` et `int` respectivement ?

Quelle est la méthode correcte pour invoquer une méthode qui a deux arguments de type string et int respectivement ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 7
We're sorry to hear that something went wrong. What happened?
some-alt