Maison > développement back-end > C++ > Comment puis-je déterminer si un type implémente une interface générique à l'aide de son type mutilé ?

Comment puis-je déterminer si un type implémente une interface générique à l'aide de son type mutilé ?

Patricia Arquette
Libérer: 2025-01-07 07:01:40
original
709 Les gens l'ont consulté

How Can I Determine if a Type Implements a Generic Interface Using its Mangled Type?

Déterminer si un type implémente un type d'interface générique à partir d'un type mutilé

Les interfaces et classes génériques permettent une grande flexibilité et une grande sécurité de type dans code, mais travailler avec et les inspecter peut être quelque peu fastidieux. Dans cet article, nous aborderons un problème spécifique : déterminer si un type implémente une interface générique lorsque seul le type mutilé est disponible.

Pour donner un exemple, considérons les définitions de type suivantes :

public interface IFoo<T> : IBar<T> {}
public class Foo<T> : IFoo<T> {}
Copier après la connexion

La question est de savoir comment pouvons-nous déterminer si le type Foo implémente l'interface générique IBar lorsque seul le type mutilé (par exemple, Foo sans le paramètre de type générique) est connu ?

La façon couramment suggérée de gérer cette situation consiste à utiliser la réflexion. Voici comment vous pouvez l'aborder :

// Assume a mangled type 'typeof(Foo)' is provided.
Type fooType = typeof(Foo);

// Check if 'Foo' implements the generic interface 'IBar<T>'.
bool isBar = fooType.GetInterfaces().Any(x =>
                x.IsGenericType &&
                x.GetGenericTypeDefinition() == typeof(IBar<>));

Console.WriteLine(isBar);
Copier après la connexion

Cette requête LINQ inspecte les interfaces implémentées par Foo, en se concentrant uniquement sur les interfaces génériques. Si l'une de ces interfaces génériques correspond à la définition de IBar<>, elle renvoie vrai.

En tirant parti de cette approche, vous pouvez déterminer efficacement si un type implémente une interface générique spécifique, même lorsqu'il s'agit de types mutilés, fournissant des informations précieuses pour vos besoins d'introspection et d'analyse de type.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal