Reflection

Eintrag zuletzt aktualisiert am: 05.10.2011

Die Gewinnung von Metainformationen aus einer Komponente selbst wird im Allgemeinen als Reflexion (engl. Reflection) bezeichnet [Griffel: Componentware, Siete 471]. Reflection ist die Möglichkeit, per Programmcode auf die Meta-Daten einer Softwarekomponente zuzugreifen.

Java-Komponenten sind selbstbeschreibend. In dem Bytecode einer Java-Class-Datei sind neben dem Programmcode auch Metainformationen über die in der Datei enthaltenen Klasse, deren Schnittstellen und Mitglieder enthalten. Die sogennante Java-Reflection ist im Namensraum java.lang.reflect realisiert. So können Klassen und Objekte zur Laufzeit analysiert werden.

Auch .NET-Komponenten sind automatisch selbstbeschreibend. Ebenso wie in Java erfolgt die Beschreibung nicht in IDL, sondern in einem propietären Format. Der Zugriff über die Metainformationen erfolgt ebenso wie bei Java über Reflection. Die CLI-Reflection ist im Namespace System.Reflection der CLI-Klassenbibliothek realisiert und unterscheidet sich nicht im grundsätzlichen Vorgehen, jedoch hinsichtlich der Programmierschnittstelle von der Java-Reflection.

Reflection ist die verbesserte Variante dessen, was in COM mit Hilfe der TypLib-Informationskomponente (TLBINF32.DLL) möglich war.

Auch in der Windows Runtime (WinRT) wird Reflection auf Basis der Metadaten (winmd) unterstützt.