Maison >développement back-end >C++ >Comment puis-je lire les attributs de classe lors de l'exécution en C# ?

Comment puis-je lire les attributs de classe lors de l'exécution en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-12 08:55:42389parcourir

How Can I Read Class Attributes at Runtime in C#?

Accès dynamique aux attributs de classe en C#

L'accès aux attributs de classe au moment de l'exécution est une technique puissante pour récupérer dynamiquement des métadonnées ou des informations de configuration. Ceci peut être réalisé en utilisant les capacités de réflexion de C#.

Récupération d'un attribut spécifique (DomainNameAttribute) :

Une méthode générique, GetDomainName<T>, simplifie la récupération d'un DomainNameAttribute de n'importe quelle classe :

<code class="language-csharp">public string GetDomainName<T>()
{
    var dnAttribute = typeof(T).GetCustomAttributes(typeof(DomainNameAttribute), true)
                               .FirstOrDefault() as DomainNameAttribute;
    return dnAttribute?.Name;
}</code>

Exemple d'utilisation :

<code class="language-csharp">// Returns "MyTable" (assuming myclass has the attribute)
string domainName = GetDomainName<myclass>();</code>

Une approche plus générale pour l'accès aux attributs :

Pour une applicabilité plus large, une méthode d'extension plus généralisée permet de récupérer tout type d'attribut et sa propriété spécifique :

<code class="language-csharp">public static class AttributeExtensions
{
    public static TValue GetAttributeValue<TAttribute, TValue>(
        this Type type, 
        Func<TAttribute, TValue> valueSelector) 
        where TAttribute : Attribute
    {
        var attribute = type.GetCustomAttributes(typeof(TAttribute), true)
                            .FirstOrDefault() as TAttribute;
        return attribute != null ? valueSelector(attribute) : default(TValue);
    }
}</code>

Exemple d'utilisation :

<code class="language-csharp">string name = typeof(MyClass).GetAttributeValue((DomainNameAttribute dna) => dna.Name);</code>

Cette méthode prend le type d'attribut et une expression lambda pour sélectionner la valeur de propriété souhaitée à partir de l'instance d'attribut. Cela offre une flexibilité pour accéder à diverses propriétés d'attribut.

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