Compartilhar via


Emitindo a informação simbólica com reflexão emitir

Emissão de reflexão permite que informações simbólicas a serem definidas para um módulo dinâmico. Informações simbólicas podem ser definidas usando a interface de gravador de símbolo padrão ou um gravador símbolo especificadas pelo chamador. Emissão de reflexão fornece uma abstração de alto nível conveniente do símbolo de nível baixo interfaces gravador a System.Diagnostics.SymbolStore namespace.

O chamador deve expressar a intenção de que o módulo dinâmico conterá informação simbólica chamando o método apropriado para definir o módulo dinâmico. As diversas opções para a criação de módulos dinâmicos com informações simbólicas são descritas na a definição de módulo dinâmico. É um erro ao chamar um método de gravador de símbolo para um módulo dinâmico que não tenha sido criado com a intenção de que contém a informação simbólica.

Emissão de reflexão fornece os seguintes métodos para emitir informações simbólicas:

  • A interface do gravador de símbolo associada a um módulo dinâmico pode ser obtida usando o ModuleBuilder.GetSymWriter método.

  • O ponto de entrada do usuário para um módulo dinâmico pode ser definido usando o ModuleBuilder.SetUserEntryPoint método. O ponto de entrada do usuário é o método que o usuário tenha identificado como o ponto de entrada, em vez dos stubs gerado pelo chamador antes do método principal.

  • Objetos do documento são definidos usando o ModuleBuilder.DefineDocument método.

  • Atributos personalizados armazenados no armazenamento de símbolo são definidos para o uso de construtores, métodos e módulos de ModuleBuilder.SetSymCustomAttribute, MethodBuilder.SetSymCustomAttribute, e ConstructorBuilder.SetSymCustomAttribute métodos, respectivamente.

  • Pontos de seqüência são identificados usando o ILGenerator.MarkSequencePoint método.

  • Escopos lexicais são definidos usando o ILGenerator.BeginScope e ILGenerator.EndScope métodos.

  • O nome de uma variável local em um método ou um construtor pode ser definido usando o LocalBuilder.SetLocalSymInfo método. Opcionalmente, o escopo léxico da variável local pode ser especificado. A LocalBuilder objeto é obtido chamando ILGenerator.DeclareLocal.

Consulte também

Outros recursos

Usando a reflexão emitir.