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.