Maison > développement back-end > C++ > Comment puis-je tester de manière fiable les types génériques en C# au moment de l'exécution ?

Comment puis-je tester de manière fiable les types génériques en C# au moment de l'exécution ?

Patricia Arquette
Libérer: 2025-01-06 15:32:40
original
897 Les gens l'ont consulté

How Can I Reliably Test for Generic Types in C# at Runtime?

Test de l'inférence de type générique en C# avec réflexion de type

En C#, l'attribution d'une valeur à une variable de type générique nécessite une inférence de type au moment de la compilation pour déterminer le type réel de la valeur. Cela peut prêter à confusion lorsque vous essayez de tester si un objet est d'un type générique au moment de l'exécution.

Une approche courante, comme le montre le code d'origine, consiste à comparer le type de l'objet à la définition du type générique. . Cependant, cela ne fonctionne pas pour les instances génériques avec des arguments de type spécifiques.

Pour tester correctement si un objet est une instance d'un type générique, vous pouvez utiliser la propriété IsGenericType de System.Type :

bool isGeneric = list.GetType().IsGenericType;
Copier après la connexion

Ceci renverra vrai si l'objet est une instance d'un type générique, quels que soient les arguments de type.

Si vous avez spécifiquement besoin de tester si l'objet est une instance d'un type générique Liste type, vous pouvez utiliser la méthode GetGenericTypeDefinition pour comparer la définition du type de l'objet à la définition de List :

bool isList = list.GetType().GetGenericTypeDefinition() == typeof(List<>);
Copier après la connexion

Cela retournera vrai si l'objet est une instance de List avec n'importe quel argument de type.

Notez que les deux approches vérifient l'équivalence de type exacte. Si l'objet est dérivé d'un type générique, ces tests renverront false.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal