SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
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 .Net
        Source (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”
Exemplo 1
 ●   no código do botão, incluir




[Assembly] - Defines an      GetExecutingAssembly - Gets the
Assembly, which is a         Assembly that the current code is running
reusable, versionable, and   from.
self-describing building
block of a common            CreateInstance - Locates a type from
language runtime             this assembly and creates an instance of it
application.
                             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

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (20)

Presentacion
PresentacionPresentacion
Presentacion
 
30838
3083830838
30838
 
Os golfinhos
Os golfinhosOs golfinhos
Os golfinhos
 
11712
1171211712
11712
 
Quem Namora
Quem NamoraQuem Namora
Quem Namora
 
FORMATO PRODUCCION VIRTUA;
FORMATO PRODUCCION VIRTUA;FORMATO PRODUCCION VIRTUA;
FORMATO PRODUCCION VIRTUA;
 
CloudU certificate.compressed
CloudU certificate.compressedCloudU certificate.compressed
CloudU certificate.compressed
 
PresentacióN Punto Y Aparte
PresentacióN   Punto Y ApartePresentacióN   Punto Y Aparte
PresentacióN Punto Y Aparte
 
A buen juez, mejor testigo
A buen juez, mejor testigoA buen juez, mejor testigo
A buen juez, mejor testigo
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a Objectos
 
11723
1172311723
11723
 
Poluição por plásticos nos oceanos
Poluição por plásticos nos oceanosPoluição por plásticos nos oceanos
Poluição por plásticos nos oceanos
 
¿y tú que marca eres?
¿y tú que marca eres?¿y tú que marca eres?
¿y tú que marca eres?
 
Actividades
ActividadesActividades
Actividades
 
11699
1169911699
11699
 
Os novos desafios da controladoria no setor energético
Os novos desafios da controladoria no setor energéticoOs novos desafios da controladoria no setor energético
Os novos desafios da controladoria no setor energético
 
O Rio Mondego Jessica
O Rio Mondego JessicaO Rio Mondego Jessica
O Rio Mondego Jessica
 
11706
1170611706
11706
 
FelizNatal-Clã9/Agr.603
FelizNatal-Clã9/Agr.603FelizNatal-Clã9/Agr.603
FelizNatal-Clã9/Agr.603
 
11676
1167611676
11676
 

Ähnlich wie Desenvolvimento em .Net - Reflection

Desenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateDesenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernate
Vitor Silva
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)
Ryan Padilha
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)
Ryan Padilha
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
biandamakengo08
 

Ähnlich wie Desenvolvimento em .Net - Reflection (20)

Desenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateDesenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernate
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Netbeans IDE
Netbeans IDENetbeans IDE
Netbeans IDE
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3
 
Apostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a ParteApostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a Parte
 
Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
xDocLet - Geração de código com xdoclet
xDocLet - Geração de código com xdocletxDocLet - Geração de código com xdoclet
xDocLet - Geração de código com xdoclet
 
DCI com PHP
DCI com PHPDCI com PHP
DCI com PHP
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)
 
Naked Objects
Naked ObjectsNaked Objects
Naked Objects
 
Fundamentos da Programação PHP OO - Aula 1
Fundamentos da Programação PHP OO - Aula 1Fundamentos da Programação PHP OO - Aula 1
Fundamentos da Programação PHP OO - Aula 1
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5
 

Mehr von Vitor Silva

Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
Vitor Silva
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - Deployment
Vitor Silva
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
Vitor Silva
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs Objectos
Vitor Silva
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - Databinding
Vitor Silva
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - Eventos
Vitor Silva
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
Vitor Silva
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User Interface
Vitor Silva
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Vitor Silva
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e Interfaces
Vitor Silva
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
Vitor Silva
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas Basicas
Vitor Silva
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
Vitor Silva
 

Mehr von Vitor Silva (15)

Cidadania20
Cidadania20Cidadania20
Cidadania20
 
Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No Porto
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - Deployment
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs Objectos
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - Databinding
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - Eventos
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User Interface
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e Interfaces
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas Basicas
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 

Desenvolvimento em .Net - Reflection

  • 1. Desenvolvimento em .Net ● Reflection
  • 2. Objectivos ● perceber conceito de reflection ● identificar aplicações potenciais desta técnica
  • 3. Reflection ● Processo através do qual um programa pode ler os seus metadados Aplicação .Net Source (vb, c#, jscript, cobol.net, …) PE – portable executable (.exe, .dll) JIT Compiler
  • 4. 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, ...
  • 5. 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
  • 6. Reflection ● O Object Explorer
  • 7. 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
  • 8. 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”
  • 9. Exemplo 1 ● no formulário 1 acrescentar uma label, uma textbox e um botão ● incluir a instrução “imports System.Reflection”
  • 10. Exemplo 1 ● no código do botão, incluir [Assembly] - Defines an GetExecutingAssembly - Gets the Assembly, which is a Assembly that the current code is running reusable, versionable, and from. self-describing building block of a common CreateInstance - Locates a type from language runtime this assembly and creates an instance of it application. using the system activator.
  • 11. Exemplo 1 ● Testar
  • 12. 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()”
  • 13. 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
  • 14. Exemplo 2 ● Testar
  • 15. 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
  • 17. Exemplo 3 ● Testar
  • 18. 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
  • 19. Exemplo 4 ● incluir no botao o seguinte codigo
  • 20. Exemplo 4 ● Testar
  • 21. 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
  • 22. Exemplo 5 ● Testar
  • 23. Objectivos ● perceber conceito de reflection ● identificar aplicações potenciais desta técnica