net - poo - c# .net - aula 07 - reflection

Upload: igorborbacom

Post on 08-Apr-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    1/17

    .NET POO C# .NET

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    2/17

    Objetivo

    Viso Geral

    Utilizando a Classe Assembly

    Classe AssemblyInfo

    Classe Type

    Classe MemberInfo

    Concluso

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    3/17

    Capacitar o aluno no uso dos principais recursos da API

    Reflection oferecidos pela plataforma .NET.

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    4/17

    Um dos maiores benefcios do .NET Framework a

    riqueza de informao do tipo, disponvel em tempo de

    execuo;

    O sistema de reflexo possibilita ao desenvolvedor navegar

    e questionar este tipo de informao;

    Este recurso permite criar sistemas muito dinmicos e

    arquiteturas de aplicaes mais plugveis.

    O namespace empregado System.Reflection.

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    5/17

    Vamos compreender um pouco mais sobre os Assemblies e

    Modules:

    Um assembly um container lgico com diferentes partesdos dados de CLR necessrio para executar o cdigo:

    Metadados de Assembly;

    Metadados de Tipo; Cdigo (Microsoft Intermediate Language Code);

    Recursos.

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    6/17

    Organizao de um Assembly:

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    7/17

    Como obter informaes sobre o assembly que est

    sendo executado atualmente:

    Assembly a = Assembly.GetExecutingAssembly();

    Console.WriteLine("Full Name: {0}", a.FullName);

    Console.WriteLine("Location: {0}", a.Location);Console.WriteLine("Only Reflection? {0}", a.ReflectionOnly);

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    8/17

    Como obter informaes sobre os mdulos que

    compem o assembly:

    Assembly a = Assembly.GetExecutingAssembly();

    Module[] modules = a.GetModules();

    foreach (Module m in modules){

    Console.WriteLine("Module Name: {0}", m.Name);

    }

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    9/17

    H vrios atributos sobre um assembly que no esto

    disponveis para leitura. Estes atributos incluem:

    Informaes de direito de cpia; Informaes sobre o fornecedor;

    A cultura;

    Arquivo de chave.

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    10/17

    Podemos definir no arquivo AssemblyInfo.cs de seu projeto

    alguns atributos em tempo de design:

    Abaixo definimos o nome da empresa:

    [assembly: AssemblyCompany("Faesa, Inc")]

    Abaixo definimos os direitos de cpia:

    [assembly: AssemblyCopyright("Todos os direitos reservados")]

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    11/17

    O desenvolvedor pode buscar o tipo do objeto de vrias

    formas tomando seu acesso pelo uso da classe Type:

    Classe Assembly;

    Classe Module;

    Instncia de uma classe;

    Usando a palavra-chave typeof no C# ou funo

    GetType no Visual Basic .NET.

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    12/17

    Exemplificando o uso da classe Type, temos:

    A partir da instncia de um objeto:

    Pessoa p = new Pessoa();

    Type pType = p.GetType();

    Utilizando a palavra-chave typeof:

    Type pType= typeof(Pessoa)

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    13/17

    Como obter os dados de uma classe?

    Type t = typeof(String);

    Console.WriteLine("Type: {0}", t.Name);

    Console.WriteLine("Namespace: {0}", t.Namespace);

    Console.WriteLine("FullName: {0}", t.FullName);

    Console.WriteLine("Is Class?: {0}", t.IsClass);

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    14/17

    Como obter as informaes de campos, mtodo e

    propriedades de uma classe?

    Type t = typeof(String);

    foreach (MemberInfo m in t.GetMembers()) {

    Console.WriteLine("{0}: {1}", m.MemberType, m.Name);

    }

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    15/17

    MemberInfo

    MethodInfo PropertyInfo FieldInfo

    Informaes de

    Mtodo

    Informaes de

    Propriedade

    Informaes de

    Campo

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    16/17

    O namespace System.Reflection inclui classes para

    interrogar os metadados sobre os assemblies, mdulos e

    tipos no CLR;

    Um nmero de atributos especficos do assembly podem ser

    usados para especificar informao sobre um assembly,

    assim como os dados de copyright, verso e marca

    registrada; Um nmero de classes que so usadas para obter

    informao derivam da classe MemberInfo, isso inclui

    PropertyInfo, MethodInfo e FieldInfo.

  • 8/7/2019 .NET - POO - C# .NET - Aula 07 - Reflection

    17/17

    .NET POO C# .NET