Kapitel 18. Reflexion und Metadaten

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Wie wir in Kapitel 17 gesehen haben, wird ein C#-Programm in eine Assembly kompiliert, die Metadaten, kompilierten Code und Ressourcen enthält. Die Überprüfung der Metadaten und des kompilierten Codes zur Laufzeit wird Reflection genannt.

Der kompilierte Code in einer Assembly enthält fast den gesamten Inhalt des ursprünglichen Quellcodes. Einige Informationen gehen dabei verloren, z. B. die Namen lokaler Variablen, Kommentare und Präprozessoranweisungen. Reflection kann jedoch auf so gut wie alles andere zugreifen und macht es sogar möglich, einen Decompiler zu schreiben.

Viele der in .NET verfügbaren und über C# bereitgestellten Dienste (z. B. dynamische Bindung, Serialisierung und Datenbindung) hängen vom Vorhandensein von Metadaten ab. Deine eigenen Programme können diese Metadaten ebenfalls nutzen und sie mit Hilfe von benutzerdefinierten Attributen sogar um neue Informationen erweitern. Der Namensraum System.Reflection beherbergt die Reflection-API. Es ist auch möglich, zur Laufzeit dynamisch neue Metadaten und ausführbare Anweisungen in Intermediate Language (IL) über die Klassen im Namensraum System.Reflection.Emit zu erstellen.

Die Beispiele in diesem Kapitel gehen davon aus, dass du die Namensräume System und Sys⁠tem.​Reflection sowie System.Reflection.Emit importierst.

Hinweis

Wenn wir in diesem Kapitel ...

Get C# 12 in einer Kurzfassung now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.