Desenvolvimento em .Net - Reflection

Preview:

Citation preview

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

Recommended