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
Patricia Arquetteoriginal
2025-01-06 15:32:40900parcourir

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;

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<>);

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:
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