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:
typeof(Book).GetProperties()
pour obtenir un tableau d'objets PropertyInfo
représentant les propriétés de la classe. PropertyInfo
et utiliser GetCustomAttributes()
pour vérifier les attributs du type souhaité (Author
dans ce cas). 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; }
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!