Maison > développement back-end > C++ > Comment puis-je déterminer si une classe est dérivée d'une classe générique en C# ?

Comment puis-je déterminer si une classe est dérivée d'une classe générique en C# ?

Susan Sarandon
Libérer: 2025-01-24 18:47:09
original
711 Les gens l'ont consulté

How Can I Determine if a Class Is Derived from a Generic Class in C#?

Identification de l'héritage d'une classe générique en C #

La programmation orientée objet utilise l'héritage des classes pour créer des relations hiérarchiques. Les classes génériques de C # introduisent une couche de complexité lors de la détermination de l'héritage. Cet article relève le défi de vérifier si une classe est dérivée d'une classe générique.

Une approche commune utilisant IsSubclassOf directement sur la définition de type générique échoue. La solution réside dans l'utilisation d'une méthode personnalisée, IsSubclassOfRawGeneric, qui gère efficacement les comparaisons de type générique.

Voici la solution:

<code class="language-csharp">static bool IsSubclassOfRawGeneric(Type generic, Type toCheck) {
    while (toCheck != null && toCheck != typeof(object)) {
        Type cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck;
        if (generic == cur) {
            return true;
        }
        toCheck = toCheck.BaseType;
    }
    return false;
}</code>
Copier après la connexion

Cette fonction itère à travers la chaîne d'héritage de toCheck (le type en cours de vérification). Pour chaque type, il obtient la définition de type générique en utilisant GetGenericTypeDefinition() si le type est générique; Sinon, il utilise le type lui-même. La fonction le compare alors avec generic (la définition de type générique pour vérifier). Une correspondance indique l'héritage de la classe générique spécifiée.

Cette méthode fournit une solution robuste pour déterminer si une classe hérite d'une classe générique en C #, surmontant les limites de la méthode standard IsSubclassOf dans ce scénario spécifique.

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