Desenvolvimento em .Net - Reflection
-
Upload
vitor-silva -
Category
Documents
-
view
2.139 -
download
0
Transcript of Desenvolvimento em .Net - Reflection
![Page 1: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/1.jpg)
Desenvolvimento em .Net●Reflection
![Page 2: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/2.jpg)
Objectivos● perceber conceito de reflection● identificar aplicações potenciais desta técnica
![Page 3: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/3.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/4.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/5.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/6.jpg)
Reflection● O Object Explorer
![Page 7: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/7.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/8.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/9.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/10.jpg)
● 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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/11.jpg)
Exemplo 1● Testar
![Page 12: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/12.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/13.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/14.jpg)
Exemplo 2● Testar
![Page 15: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/15.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/16.jpg)
Exemplo 3
![Page 17: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/17.jpg)
Exemplo 3● Testar
![Page 18: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/18.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/19.jpg)
Exemplo 4● incluir no botao o seguinte codigo
![Page 20: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/20.jpg)
Exemplo 4● Testar
![Page 21: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/21.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/22.jpg)
Exemplo 5● Testar
![Page 23: Desenvolvimento em .Net - Reflection](https://reader034.fdocument.pub/reader034/viewer/2022051400/5599ca6c1a28ab0a368b45ef/html5/thumbnails/23.jpg)
Objectivos● perceber conceito de reflection● identificar aplicações potenciais desta técnica