Ausgeben von symbolischen Informationen mittels Reflektionsausgabe

Aktualisiert: November 2007

Mit der Reflektionsausgabe können symbolische Informationen für ein dynamisches Modul definiert werden. Symbolische Informationen können mithilfe der standardmäßigen oder einer aufruferspezifischen Symbolwriterschnittstelle definiert werden. Die Reflektionsausgabe stellt eine ausreichend hohe Abstraktionsebene für die Symbolwriterschnittstellen unterer Ebenen im System.Diagnostics.SymbolStore-Namespace zur Verfügung.

Der Aufrufer muss die Absicht anzeigen, dass ein dynamisches Modul symbolische Informationen enthalten soll, indem er die geeignete Methode aufruft, um das dynamische Modul zu definieren. Die verschiedenen Optionen für das Erstellen dynamischer Module mit symbolischen Informationen werden unter Definieren eines dynamischen Moduls beschrieben. Es ist nicht zulässig, eine Symbolwritermethode für ein dynamisches Modul aufzurufen, das nicht mit der Absicht erstellt wurde, symbolische Informationen zu enthalten.

Die Reflektionsausgabe stellt folgende Methoden zur Ausgabe symbolischer Informationen zur Verfügung:

  • Die mit einem dynamischen Modul verknüpfte Symbolwriterschnittstelle kann mithilfe der ModuleBuilder.GetSymWriter-Methode aufgerufen werden.

  • Der Einstiegspunkt eines Benutzers für ein dynamisches Modul kann mithilfe der ModuleBuilder.SetUserEntryPoint-Methode definiert werden. Der Einstiegspunkt für Benutzer ist die Methode, die als solche ermittelt wurde; es sind nicht die vom Aufrufer vor der Hauptmethode generierten Stubs.

  • Dokumentobjekte werden über die ModuleBuilder.DefineDocument-Methode definiert.

  • Benutzerdefinierte Attribute aus dem Symbolspeicher werden für Module, Methoden und Konstruktoren mit den Methoden ModuleBuilder.SetSymCustomAttribute, MethodBuilder.SetSymCustomAttribute und ConstructorBuilder.SetSymCustomAttribute definiert.

  • Sequenzpunkte werden mit der ILGenerator.MarkSequencePoint-Methode identifiziert.

  • Lexikalische Gültigkeitsbereiche werden mit der ILGenerator.BeginScope-Methode und der ILGenerator.EndScope-Methode definiert.

  • Der Name einer lokalen Variablen in einer Methode oder einem Konstruktor kann mit der LocalBuilder.SetLocalSymInfo-Methode festgelegt werden. Optional kann der lexikalische Gültigkeitsbereich der lokalen Variablen angegeben werden. Ein LocalBuilder-Objekt wird durch den Aufruf von ILGenerator.DeclareLocal abgerufen.

Siehe auch

Weitere Ressourcen

Verwenden der Reflektionsausgabe