Ausgeben von symbolischen Informationen mittels Reflektionsausgabe

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 für Module, Methoden und Konstruktoren werden mithilfe der ModuleBuilder.SetSymCustomAttribute-Methode, der MethodBuilder.SetSymCustomAttribute-Methode und der entsprechenden ConstructorBuilder.SetSymCustomAttribute-Methode definiert.

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

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

  • Der Name einer lokalen Variablen in einer Methode oder einem Konstruktor kann mithilfe 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 aufgerufen.

Siehe auch

Weitere Ressourcen

Verwenden der Reflektionsausgabe