Cenários de Assembly dinâmico de emissão de reflexão

Emissão de reflexão que 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 de 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 um assembly estático, um assembly dinâmico persistente ou outro conjunto de dinâmico transitório. No entanto, o common language runtime não permite que um módulo dinâmico persistente 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 salvo 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 os domínios de aplicativo remoto

Alguns cenários requerem um assembly dinâmico seja criado e executado em um domínio de aplicativo remoto. Emissão de reflexão não permite que um assembly dinâmico a ser emitido diretamente a um domínio de aplicativo remoto. A solução é emitir o assembly dinâmico no domínio do aplicativo atual, salve o assembly dinâmico emitido em disco e, em seguida, carregar o assembly dinâmico para o domínio de 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 arquivo salvo arquivo executável portátil (PE) foi carregado do disco.

  • RunAndSave

    O assembly dinâmico representado por um AssemblyBuilder é persistente, mas também podem ser executadas antes e/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 runtime 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 a reflexão emitir.