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
Linda Hamiltonoriginal
2025-01-29 07:52:08903parcourir

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:

<code class="language-csharp">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;
}</code>

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