Compartilhar via


Emitir informações simbólicos com reflexão Emit

Emissão de reflexão permite que as 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 uma interface de gravador de símbolo especificado pelo chamador.Emissão de reflexão fornece uma abstração de alto nível conveniente do símbolo de nível baixo de interfaces de gravador no System.Diagnostics.SymbolStore espaço para nome.

O chamador deve expressar uma 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 criação de módulos dinâmicos com informações simbólicas descritas Definição de um módulo dinâmico.É um erro para chamar um método de gravador de símbolo para um módulo dinâmico não foi 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 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 de 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 tiver identificado sistema autônomo o ponto de entrada em vez dos stubs gerado pelo chamador antes que o método principal.

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

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

  • Pontos de sequê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 de variável local pode ser especificado.A LocalBuilder objeto é obtido chamando ILGenerator.DeclareLocal.

Consulte também

Outros recursos

Usando o reflexão Emit