Maison >développement back-end >C++ >Comment lire dynamiquement les valeurs d'attribut en C# au moment de l'exécution ?

Comment lire dynamiquement les valeurs d'attribut en C# au moment de l'exécution ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-12 06:01:43381parcourir

How to Dynamically Read Attribute Values in C# at Runtime?

Lire dynamiquement les valeurs d'attribut au moment de l'exécution

Dans le développement de logiciels, vous rencontrez souvent des situations où vous devez accéder dynamiquement aux propriétés associées à une classe ou à un objet. Cette fonctionnalité est essentielle pour divers scénarios tels que la réflexion, la récupération de configuration et la génération de code dynamique.

Cet article explique comment implémenter la récupération d'attributs dynamiques en C#, en démontrant deux méthodes différentes :

1. Méthodes personnalisées pour des types d'attributs spécifiques :

Pour lire la valeur d'attribut d'un type d'attribut spécifique, tel que l'attribut DomainName, vous pouvez définir une méthode personnalisée comme celle-ci :

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

2. Méthodes d'extension génériques pour tout type de propriété :

Pour rendre le processus de récupération de propriété général et prendre en charge tout type de propriété, vous pouvez créer la méthode d'extension générique suivante :

<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 att = type.GetCustomAttributes(
            typeof(TAttribute), true
        ).FirstOrDefault() as TAttribute;
        if (att != null)
        {
            return valueSelector(att);
        }
        return default(TValue);
    }
}</code>

Utilisation :

Les deux méthodes vous permettent d'obtenir la valeur de l'attribut DomainName au moment de l'exécution, comme ceci :

<code class="language-csharp">// 使用自定义方法
string domainNameValue = GetDomainName<MyClass>();

// 使用扩展方法
string name = typeof(MyClass)
    .GetAttributeValue((DomainNameAttribute dna) => dna.Name);</code>

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