Wie Sie sehen, lassen sich mithilfe der Type-Klasse eine ganze Reihe von Informationen über einen bestimmten Typ ermitteln. In Listing A finden Sie den C#-Source-Code für eine kleine Beispielanwendung namens ClassInfo, die sämtliche Daten zu einer bestimmten Klasse auf der Konsole auflistet. Abbildung A zeigt die Ergebnisse der Ausführung von ClassInfo für System.Object.
Aus Gründen der Vereinfachung arbeitet ClassInfo nur mit Referenztypen, d.h. es werden nur Typen untersucht, für die die Eigenschaft isClass die Ausgabe True ergibt. Nachdem festgestellt wurde, dass der jeweilige Typ tatsächlich eine Klasse darstellt, führt ClassInfo sämtliche der Klasse hinzugefügten Deklarationsänderungen auf. Wenn z. B. für die Eigenschaft isAbstract True ausgegeben wird, erscheint der Text „Abstract“ auf der Konsole. Anschließend wird eine Liste der Methoden der Klasse erstellt, mithilfe der Methode GetMethods, die ein Array mit System.Reflection.MethodInfo-Objekten ausgibt, das die komplette Schnittstelle der Klasse darstellt, mit Ausnahme von Konstruktoren und öffentlichen Feldern.
Jedes MethodInfo-Objekt repräsentiert eine einzelne Methode und umfasst eine Gruppe aus isX-Eigenschaften, anhand derer Sie feststellen können, wie die Methode deklariert ist: öffentlich, privat, versiegelt usw. MethodInfo bietet auch eine GetParameters-Methode, mit der ein Array mit System.Reflection.ParameterInfo-Objekten ausgegeben wird, von denen jedes einen der deklarierten Parameter der Methode darstellt. ClassInfo wird für alle in der Klasse verwendeten Methoden wiederholt, wobei die jeweils für diese deklarierten Eigenschaften und Parameter aufgelistet werden.
Obwohl ClassInfo diese Funktion nicht nutzt, ermöglicht die Type-Klasse eine solche Wiederholung auch für Eigenschaften, Konstruktoren, Events und Felder einer Klasse, wobei die Vorgehensweise der Abfrage der Methoden in ClassInfo ähnelt. Man würde dafür die entsprechende Get-Methode aus Tabelle A einsetzen.
Neueste Kommentare
Noch keine Kommentare zu Aufruf von .NET-Klassendaten mit Reflection
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.