Compartir a través de


Emitir información simbólica con la emisión de la reflexión

Actualización: noviembre 2007

La emisión de la reflexión permite definir información simbólica para un módulo dinámico. La información simbólica se puede definir mediante la interfaz del sistema de escritura de símbolos predeterminado o mediante una interfaz del sistema de escritura de símbolos especificada por el llamador. La emisión de la reflexión proporciona una práctica abstracción de alto nivel de las interfaces del sistema de escritura de símbolos de bajo nivel en el espacio de nombres System.Diagnostics.SymbolStore.

El llamador debe expresar la intención de que un módulo dinámico contenga información simbólica mediante una llamada al método correspondiente para definir el módulo dinámico. Las distintas opciones para crear módulos dinámicos con información simbólica se describen en Definir un módulo dinámico. No se puede llamar a un método del sistema de escritura de símbolos para un módulo dinámico que no se haya creado con la intención de contener información simbólica.

La emisión de la reflexión proporciona los métodos siguientes para emitir información simbólica:

  • La interfaz del sistema de escritura de símbolos asociada a un módulo dinámico se puede obtener con el método ModuleBuilder.GetSymWriter.

  • El punto de entrada de usuario de un módulo dinámico se puede definir con el método ModuleBuilder.SetUserEntryPoint. El punto de entrada de usuario es el método que el usuario ha identificado como punto de entrada, en lugar del código auxiliar generado por el llamador antes del método principal.

  • Los objetos de documento se definen mediante el método ModuleBuilder.DefineDocument.

  • Para definir atributos personalizados guardados en el almacén de símbolos para módulos, métodos y constructores, se utilizan los métodos ModuleBuilder.SetSymCustomAttribute, MethodBuilder.SetSymCustomAttribute y ConstructorBuilder.SetSymCustomAttribute, respectivamente.

  • Los puntos de secuencia se identifican con el método ILGenerator.MarkSequencePoint.

  • Los ámbitos léxicos se definen con los métodos ILGenerator.BeginScope y ILGenerator.EndScope.

  • Para establecer el nombre de una variable local en un método o constructor, utilice el método LocalBuilder.SetLocalSymInfo. Opcionalmente, se puede especificar el ámbito léxico de la variable local. El objeto LocalBuilder se obtiene mediante una llamada a ILGenerator.DeclareLocal.

Vea también

Otros recursos

Utilizar Reflection Emit