Desenvolvimento em .Net - Reflection
-
Upload
vitor-silva -
Category
Documents
-
view
2.139 -
download
0
Transcript of Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net●Reflection
Objectivos● perceber conceito de reflection● identificar aplicações potenciais desta técnica
Reflection● Processo através do qual um programa pode
ler os seus metadados
Aplicação .NetSource (vb, c#, jscript, cobol.net, …)PE – portable executable (.exe, .dll)JIT Compiler
Reflection● Através dessa introspecção e usando esses
metadados podemos:– conhecer toda a estrutura desse assembly (.dll,
.exe)● por exemplo, saber quais os seus métodos,
propriedades, ...– usar uma representação textual para executar
funções nesses assemblies● por exemplo, instanciar objectos, executar métodos, ...
Reflection● Podemos desenvolver uma aplicação que irá
utilizar objectos que desconhece!– exemplo:
● gestor de documentos. só sabe que tem que abrir, fechar objectos. não sabe se esse objecto é do tipo Empresa.Produto.Objecto1 ou Empresa2.ObjectoXpto
Reflection● O Object Explorer
MultiITV● Objectivo futuro
– ter módulos desenvolvidos em Progress e outros em .Net
– permitir um deployment (instalação no cliente) simples / incremental
● Reflection– Desenvolve-se um novo módulo em .Net num
assembly autónomo– Configura-se a aplicação de forma a que passe a
chamar esse módulo em vez do anterior programa Progress
Exemplo 1● Criar uma solução nova● No projecto criado inserir 2 formulários● mudar assembly name e root namespace do
projecto para “Infos.Teste.LoadForm”
Exemplo 1● no formulário 1 acrescentar uma label, uma
textbox e um botão● incluir a instrução “imports System.Reflection”
● no código do botão, incluir
Exemplo 1
[Assembly] - Defines an Assembly, which is a reusable, versionable, and self-describing building block of a common language runtime application.
GetExecutingAssembly - Gets the Assembly that the current code is running from.
CreateInstance - Locates a type from this assembly and creates an instance of it using the system activator.
Exemplo 1● Testar
Exemplo 2● criar um novo projecto na mesma solução● mudar assembly name e root namespace do
novo projecto para “Infos.Teste.FormCarregavel”
● criar um formulario nesse novo projecto● nesse formulario incluir um botao com código
necessário para fechar form “Me.Close()”
Exemplo 2● no primeiro formulário do projecto inicial
acrescentar mais uma label, caixa de texto e botao
● incluir no novo botao o seguinte codigo
Exemplo 2● Testar
Exemplo 3● no projecto inicial criar
– uma classe chamada Utilizador com as propriedades nome (string), morada (string) e datanascimento (datetime) e uma função chamada getIdade que não recebe nenhum parametro
● no primeiro formulário do projecto inicial acrescentar uma “RichTextBox” e um novo botao
● incluir no codigo do novo botao o conteudo do ficheiro codigo0401_01.txt
Exemplo 3
Exemplo 3● Testar
Exemplo 4● Criar um novo formulario
chamado “FormDinamico”● nesse form acrescentar
uma label, uma textbox, um botao e um panel
● incluir no codigo do novo form o conteudo do ficheiro codigo0401_02.txt
Exemplo 4● incluir no botao o seguinte codigo
Exemplo 4● Testar
Exemplo 5● incluir no novo form um novo botao● incluir no codigo do novo form o conteudo do
ficheiro codigo0401_03.txt● incluir no botao o seguinte codigo
Exemplo 5● Testar
Objectivos● perceber conceito de reflection● identificar aplicações potenciais desta técnica