Maison > développement back-end > C++ > Comment extraire des constantes d'un type à l'aide de la réflexion C# ?

Comment extraire des constantes d'un type à l'aide de la réflexion C# ?

Linda Hamilton
Libérer: 2025-01-05 19:43:44
original
423 Les gens l'ont consulté

How to Extract Constants from a Type Using C# Reflection?

Comment extraire des constantes de n'importe quel type à l'aide de Reflection

Reflection fournit un moyen puissant d'inspecter les types au moment de l'exécution. Cela vous permet de récupérer des informations sur les propriétés, les méthodes et même ses constantes d'un type.

Pour obtenir toutes les constantes d'un type à l'aide de la réflexion, vous pouvez utiliser la méthode GetFields avec des indicateurs de liaison spécifiques :

BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy
Copier après la connexion

Ces indicateurs garantissent que vous récupérez tous les champs publics statiques déclarés au type actuel ou à l'un de ses types de base.

Après avoir récupéré le tableau d'objets FieldInfo, vous pouvez les filtrer pour inclure uniquement des constantes en vérifiant les indicateurs IsLiteral et IsInitOnly :

if(fi.IsLiteral && !fi.IsInitOnly)
Copier après la connexion

L'indicateur IsLiteral indique que la valeur du champ est attribuée au moment de la compilation, tandis que l'indicateur IsInitOnly indique que le champ ne peut être initialisé que dans le constructeur. Pour les constantes, ces deux indicateurs doivent être vrais.

En utilisant cette approche, vous pouvez extraire efficacement toutes les constantes de n'importe quel type en utilisant la réflexion :

private List<FieldInfo> GetConstants(Type type)
{
    return type.GetFields(BindingFlags.Public | BindingFlags.Static |
            BindingFlags.FlattenHierarchy)
        .Where(fi => fi.IsLiteral && !fi.IsInitOnly).ToList();
}
Copier après la connexion

Cette méthode renvoie une liste d'objets FieldInfo qui représentent les constantes déclarées dans le type spécifié.

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