Kapitel 19. 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 18 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 ziemlich alles andere zugreifen, dass es sogar möglich ist, 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 IL über die Klassen im System.Reflection.Emit Namensraum.

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

Hinweis

Wenn wir in diesem Kapitel den Begriff "dynamisch" verwenden, ...

Get C# 8.0 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.