Exemplo de tecnologia de resolução tipo dinâmico

Este exemplo demonstra como hosts podem participar do processo de resolução de tipo, fornecendo um manipulador de eventos que retorna um assembly que contém o tipo solicitado.Isso é uma técnica avançada, provavelmente a ser usado em aplicativos distribuídos para facilitar a flexibilidade e a tolerância a falhas.

Para obter informações sobre como usar os exemplos, consulte os tópicos a seguir:

Download sample

Para compilação a amostra usando o aviso de comando

  1. Abrir um janela do aviso de comando e navegar até um de subpastas específicas do linguagem para a amostra.

  2. Tipo de MSBuild DynamicTypeResolveCS.sln or MSBuild DynamicTypeResolveVB.sln, dependendo de sua escolha de linguagem de programação, na linha de comando.

Para compilação a amostra usando o Visual Studio

  1. em aberto Windows Explorer e navegar até um de subpastas específicas do linguagem para a amostra.

  2. clicar duas vezes no ícone para DynamicTypeResolveCS.sln ou DynamicTypeResolveVB.sln, dependendo de sua escolha de linguagem, de programação para em em aberto o arquivo no Visual Studio.

  3. Sobre o Compilação menu, clicar Criar solução.

Para executar este exemplo

  1. Abra a janela do aviso de comando e navegar até o diretório que contém o arquivo executável compilado.

  2. Tipo de DynamicTypeResolve.exe na linha de comando.

Observação:

O exemplo cria um aplicativo de console.Tem de inicialização e executá-la em uma janela do aviso de comando para exibir sua saída.

Comentários

O exemplo de tentativas de instanciar um tipo que não existe.No entanto, o exemplo também lida com falhas de tipo de carga e cria dinamicamente o tipo necessário, evitando um FileNotFoundException.

O exemplo usa as seguintes tecnologias e classes.

  • Reflexão

    • AppDomain O AssemblyResolve evento dessa classe é usado para adicionar um manipulador de eventos que é chamado quando uma carga de tipo de falha.

    • Activator Usado para criar instâncias de um tipo cujo nome não é necessariamente conhecido no time de compilar.

    • MethodInfo Usado para chamar um método em um tipo em que o nome do método não é necessariamente conhecido em time de compilar.

    • AssemblyBuilder Usado para emitir um assembly dinâmico em time de execução.

    • AssemblyName Usado para definir a identidade exclusiva de um assembly.O exemplo torna o uso mais simples desse tipo, para dar o assembly dinâmico um nome de texto.

    • ModuleBuilder Usado para compilação módulo dinâmico no conjunto de módulos (assembly) dinâmico.

    • TypeBuilder Esse tipo derivado de Type, é usado para criar um tipo dinamicamente. Dela, você pode solicitar instâncias do FieldBuilder, ConstructorBuilder, e MethodBuilder tipos. Usando esses tipos, o exemplo gera um tipo de total.

    • MethodBuilder Usado para definir um método em um tipo dinâmico.

    • ILGenerator O MethodBuilder Digite implementa o GetILGenerator método, que retorna uma instância das ILGenerator Digite. Esse tipo é usado para gerar código MSIL (Microsoft Intermediate linguagem) dinamicamente.

  • Eventos e representantes

    • ResolveEventHandler Usado para indicar um método de retorno de chamada a ser chamado quando uma resolução de tipo de falha.

Consulte também

Referência

Activator

AppDomain

AssemblyBuilder

AssemblyBuilderAccess

AssemblyName

FileNotFoundException

ILGenerator

MethodAttributes

MethodBuilder

MethodInfo

ModuleBuilder

ResolveEventHandler

System.IO

System.Reflection

System.Reflection.Emit

TypeBuilder

Outros recursos

Reflexão

Emitindo Métodos Dinâmicos e Assemblies

Geração e compilação dinâmicas de código fonte

Tratamento e disparada de eventos

Eventos gerenciados e não gerenciados