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
Libérer: 2025-01-12 06:01:43
original
361 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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