Partilhar via


reflexão Emit cenários assembly dinâmico

Emissão de reflexão suporta a criação de módulos dinâmicos definidos em assemblies dinâmicos.Módulo dinâmico criado em um assembly dinâmico pode ser transitórios ou persistente.

Restrições sobre referências de tipo

Módulos (assemblies) pode fazer referência a tipos definidos em outro assembly.Um assembly dinâmico transitório com segurança pode fazer referência a tipos definidos em outro assembly dinâmico transitório, um assembly dinâmico persistente ou um assembly estático.No entanto, o common linguagem tempo de execução não permite que um módulo persistente dinâmico fazer referência a um tipo definido no módulo dinâmico transitório.Isso ocorre porque quando o módulo dinâmico persistente é carregado depois de salva em disco, o tempo de execução não é possível resolver as referências aos tipos definidos no módulo dinâmico transitório.

Restrições de emissão para domínios remoto do aplicativo

Alguns cenários requerem um conjunto dinâmico para ser criado e executado em um domínio do aplicativo remoto.Emissão de reflexão não permite que um assembly dinâmico a ser emitido diretamente a um domínio do aplicativo remoto.A solução é emitir o assembly dinâmico no domínio do aplicativo corrente, salvar o conjunto dinâmico emitido em disco e, em seguida, carregar o assembly dinâmico para o domínio do aplicativo remoto.

Modos de acesso de assembly dinâmico

É possível criar assemblies dinâmicos usando um dos seguintes modos de acesso:

  • Executar

    O assembly dinâmico representado por um AssemblyBuilder é transitório. O assembly dinâmico somente pode ser usado para executar o código emitido.

  • Salvar

    O assembly dinâmico representado por um AssemblyBuilder é persistente, mas não pode ser executado até que o salvo arquivo executável portável (PE) foi carregado do disco.

  • RunAndSave

    O assembly dinâmico representado por um AssemblyBuilder é persistente, mas também podem ser executadas e/antes ou depois que o assembly é salvo em disco.

O modo de acesso deve ser especificado quando o assembly dinâmico é definido e não pode ser alterado posteriormente.O tempo de execução usa o modo de acesso de um assembly dinâmico para otimizar a representação interna do assembly.

Consulte também

Outros recursos

Emitindo Métodos Dinâmicos e Assemblies

Usando o reflexão Emit