23
Desenvolvimento em .Net Reflection

Desenvolvimento em .Net - Reflection

Embed Size (px)

Citation preview

Page 1: Desenvolvimento em .Net - Reflection

Desenvolvimento em .Net●Reflection

Page 2: Desenvolvimento em .Net - Reflection

Objectivos● perceber conceito de reflection● identificar aplicações potenciais desta técnica

Page 3: Desenvolvimento em .Net - Reflection

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

Page 4: Desenvolvimento em .Net - Reflection

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, ...

Page 5: Desenvolvimento em .Net - Reflection

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

Page 6: Desenvolvimento em .Net - Reflection

Reflection● O Object Explorer

Page 7: Desenvolvimento em .Net - Reflection

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

Page 8: Desenvolvimento em .Net - Reflection

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”

Page 9: Desenvolvimento em .Net - Reflection

Exemplo 1● no formulário 1 acrescentar uma label, uma

textbox e um botão● incluir a instrução “imports System.Reflection”

Page 10: Desenvolvimento em .Net - 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.

Page 11: Desenvolvimento em .Net - Reflection

Exemplo 1● Testar

Page 12: Desenvolvimento em .Net - Reflection

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()”

Page 13: Desenvolvimento em .Net - Reflection

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

Page 14: Desenvolvimento em .Net - Reflection

Exemplo 2● Testar

Page 15: Desenvolvimento em .Net - Reflection

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

Page 16: Desenvolvimento em .Net - Reflection

Exemplo 3

Page 17: Desenvolvimento em .Net - Reflection

Exemplo 3● Testar

Page 18: Desenvolvimento em .Net - Reflection

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

Page 19: Desenvolvimento em .Net - Reflection

Exemplo 4● incluir no botao o seguinte codigo

Page 20: Desenvolvimento em .Net - Reflection

Exemplo 4● Testar

Page 21: Desenvolvimento em .Net - Reflection

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

Page 22: Desenvolvimento em .Net - Reflection

Exemplo 5● Testar

Page 23: Desenvolvimento em .Net - Reflection

Objectivos● perceber conceito de reflection● identificar aplicações potenciais desta técnica