Heim >Backend-Entwicklung >C++ >Wie kann ich Attributinformationen aus Klasseneigenschaften unter Verwendung von Reflexion in C#abrufen?
Verwenden Sie die Reflexion, um auf Eigenschaftsattribute in C#
zuzugreifen Dieser Artikel zeigt, wie Attributinformationen abgerufen werden, die mit den Reflexionsfunktionen von C#zugeordnet sind. Betrachten wir eine Book
-Klasse mit einer Name
-Mobilie, die mit einem benutzerdefinierten Attribut dekoriert ist. Unser Ziel ist es, sowohl den Eigenschaftsnamen als auch den Wert des Attributs (Autorenname) zu extrahieren. Author
typeof(Book).GetProperties()
Objekten zu erhalten, die die Eigenschaften der Klasse darstellen. PropertyInfo
PropertyInfo
verwenden, um die Attribute des gewünschten Typs zu überprüfen (GetCustomAttributes()
in diesem Fall). Author
Author
und den Wert des Attributs aus der Attributinstanz ab. PropertyInfo
<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>Diese
-Methode gibt ein Wörterbuch zurück, bei dem Schlüssel zu Eigenschaftsnamen und Werte die entsprechenden Autorennamen aus dem Attribut GetAuthors()
sind. Dies zeigt effektiv, wie die Reflexion den Zugriff auf Metadaten ermöglicht, die mit Klassenmitgliedern verbunden sind. Author
Das obige ist der detaillierte Inhalt vonWie kann ich Attributinformationen aus Klasseneigenschaften unter Verwendung von Reflexion in C#abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!