Visão geral de reflexão
The Common linguagem tempo de execução gerencia o carregador de domínios de aplicativo, que são constituem dos limites definidos em torno de objetos que têm o mesmo escopo de aplicativo.Esse gerenciamento inclui carregar cada assembly para o domínio do aplicativo apropriado e controlar o layout da memória da hierarquia de tipo em cada assembly.
Módulos (assemblies) contém módulos, os módulos contêm tipos e tipos contêm membros.Reflexão fornece objetos que encapsulam os assemblies, módulos e tipos.Você pode usar a reflexão para criar uma instância de um tipo, BIND o tipo a um objeto existente ou obter o tipo de um objeto existente dinamicamente.Em seguida, você pode chamar métodos do tipo ou acesso seus campos e propriedades.Usos típicos de reflexão incluem o seguinte:
Use Assembly Para definir e carregar módulos (assemblies), carregar módulos que são listados no manifesto do assembly e localizar um tipo desse assembly e criar uma instância dele.
Use Module Para descobrir informações sistema autônomo o assembly que contém o módulo e sistema autônomo classes no módulo. Você também pode obter todos os métodos global ou outros métodos específicos e não global definidos no módulo.
Use ConstructorInfo Para descobrir informações sistema autônomo nome, parâmetros, acesso modificadores (sistema autônomo pública or particular) e sistema autônomo detalhes de implementação (por exemplo, Resumo or virtual) de um construtor.Use o GetConstructors ou GetConstructor método de um Type para chamar um construtor específico.
Use MethodInfo Para descobrir informações sistema autônomo o tipo de nome, retorno, parâmetros, acesso modificadores (sistema autônomo pública or particular) e sistema autônomo detalhes de implementação (por exemplo, Resumo or virtual) de um método.Use o GetMethods ou GetMethod método de um Type para chamar um método específico.
Use FieldInfo Para descobrir informações sistema autônomo nome, acesso modificadores (sistema autônomo pública or particular) e sistema autônomo detalhes de implementação (por exemplo, estático) de um campo e para obter ou conjunto valores de campo.
Use EventInfo Para descobrir informações sistema autônomo o nome, manipulador de eventos tipo de dados, atributos personalizados, tipo, declarando e refletem o tipo de um evento e para adicionar ou remover manipuladores de eventos.
Use PropertyInfo Para descobrir informações sistema autônomo o nome, tipo de dados, a declaração de tipo, refletidas tipo e o status somente leitura ou gravação de uma propriedade e para obter ou conjunto valores de propriedade.
Use ParameterInfo Para descobrir informações sistema autônomo nome do parâmetro, tipo de dados, seja um parâmetro de entrada ou parâmetro de saída e a posição do parâmetro na assinatura de um método.
Use CustomAttributeData Para obter informações de atributos personalizados ao trabalhar no contexto somente de reflexão de um domínio do aplicativo. CustomAttributeData permite que você examine atributos sem criar ocorrências delas.
As classes do System.Reflection.Emit espaço para nome fornecem uma forma especializada de reflexão que lhe permite criar tipos em time de execução.
Também é possível usar reflexão para criar aplicativos chamados de navegadores de tipo, que permitem aos usuários selecionar tipos e, em seguida, exiba as informações sobre esses tipos.
Há outros usos para reflexão.Compiladores de linguagens sistema autônomo JScript usar reflexão para criar tabelas de símbolos.As classes a System.Runtime.Serialization namespace usar reflexão para acessar os dados e determinar quais campos devem ser mantidas. As classes a System.Runtime.Remoting namespace usar reflexão indiretamente através de serialização.