Maison > développement back-end > C++ > Comment puis-je récupérer les informations d'attribut des propriétés de classe en utilisant la réflexion dans C #?

Comment puis-je récupérer les informations d'attribut des propriétés de classe en utilisant la réflexion dans C #?

Linda Hamilton
Libérer: 2025-01-29 07:52:08
original
877 Les gens l'ont consulté

How Can I Retrieve Attribute Information from Class Properties Using Reflection in C#?

Utilisation de la réflexion pour accéder aux attributs de propriété en C #

Cet article montre comment récupérer les informations d'attribut associées aux propriétés de classe à l'aide des capacités de réflexion de C #. Considérons une classe Book avec une propriété Name décorée d'un attribut personnalisé Author. Notre objectif est d'extraire à la fois le nom de la propriété et la valeur de l'attribut (nom de l'auteur).

Le processus implique ces étapes:

  1. Utilisez typeof(Book).GetProperties() pour obtenir un tableau d'objets PropertyInfo représentant les propriétés de la classe.
  2. itérer dans chaque objet PropertyInfo et utiliser GetCustomAttributes() pour vérifier les attributs du type souhaité (Author dans ce cas).
  3. Si un attribut Author est trouvé, récupérez le nom de la propriété à partir de PropertyInfo et la valeur de l'attribut à partir de l'instance d'attribut.

Voici un exemple de code C # illustrant ceci:

public class AuthorAttribute : Attribute
{
    public string Name { get; set; }
    public AuthorAttribute(string name) { Name = name; }
}

public class Book
{
    [Author("Jane Austen")]
    public string Name { get; set; }
    // ... other properties
}

public static Dictionary<string, string> GetAuthors()
{
    var authors = new Dictionary<string, string>();
    var properties = typeof(Book).GetProperties();

    foreach (var property in properties)
    {
        var attributes = property.GetCustomAttributes(true);
        foreach (var attribute in attributes)
        {
            var authorAttribute = attribute as AuthorAttribute;
            if (authorAttribute != null)
            {
                authors.Add(property.Name, authorAttribute.Name);
            }
        }
    }
    return authors;
}
Copier après la connexion

Cette méthode GetAuthors() renvoie un dictionnaire où les clés sont des noms de propriétés et des valeurs sont les noms d'auteur correspondants de l'attribut Author. Cela montre efficacement comment la réflexion permet l'accès aux métadonnées associées aux membres de la classe.

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 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