You are on page 1of 5
ranao1e CCH - Usando Retlection na prica-I Macorottinet c# - Usando Reflection na pratica - 11 Neste artigo vou mostrar uma aplicagao pritica da m7 utilizacdo de Reflection Le ate Na Serializando objetos no formato JSON Estou continuando a primeira parte do artigo e vou mostrar outra aplicacao pratica do uso de Reflection para otimizar 0 cédigo. Neste artigo vamos aplicar Reflection para realizar a serializacéo de um objeto para o formato JSON. Recursos usados: + Visual Studio Community 2015 (update 3) Nota: Baixe e use a verséo Community 2015 do VS ela é gratis e é equivalente a versdo Professional. Criando a solugao no VS 2015 Community Abra o Visual Studio Community 2015 e clique em New Project; Selecione Visual C# -> Console Application Informe o nome Reflection Serializacao ¢ clique no botéo OK. Criando as classes Vamos criar as classes Cliente, Produto e Pedido via menu Project Add Class. A seguir temos 0 cédigo de cada classe 1- Cliente public class Cliente { public int Id { get; set; ) public string Nome { get; set: } public string Endereco { get; set; } ) 2- Produto public class Produto { public int Id { get; set; } public string Nome { get; set; } public decimal Preco { get; set; } public int Estoque { get; set; } public DateTime Entrada ( get; set; } public DateTime? Saida { get; set; } public DateTime Validade { get; set; } public bool Ativo { get; set; } } 3- Pedido wn. macorat ne/16/"1/¢_reflec2 him 4s ranao1e CCH - Usando Retlection na prica-I public class Pedido { public int Id { get; set; } public int Clienteld ( get; set; } public DateTime DataPedido { get; set; } } Criando 0 método para serializar objetos para o formato JSON Agora vamos fazer uma implementagao de um método chamado Se receber um objeto e vai serializar este objeto para o formato JSON. arObjetoParadson que ira Esse método poderia ter sido incluido em uma classe com métodos definidos para desserializar mas para ficar mais claro vou implementar 0 método no arquivo Program.cs: public static string SerializarObjetoParadson(object obj) ‘ var valorSerializad //Namos obter agora todas as propriedades do tipo //Usamos 0 método GetProperties para obter //o nome das propriedades do tipo foreach (var prop in obj.GetType().GetProperties()) q /Usamos 0 método GetValue() para obter o valor da instancia desse tipo var valor = prop.GetValue(obj Hagora verificamos o tipo de cada propriedade I/para realizar a formatacdo adequada if (prop.PropertyType == typeof(DateTime)) ‘ valorSerializado += ) else if (prop.PropertyType == typeof(Decimal) || prop.PropertyType valorSerializado += ) else ‘ valorSerializado += "\" + prop.Name + "\':" + "\"" + valor + "\", ) + prop.Name + + String Format("(0:dd/MM/yyyy)", valor) + typeof(Double)) + prop.Name + + String.Format(*(0:N)", valor) + ) valorSerializado = valorSerializado.Substring(1, valorSerializado.Length - 2); Hretorna o objeto serializado return valorSerializado + ) Criamos assim um método genérico para realizar a serializacao de objeto para JSON Testando a serializacao Agora vamos mostrar que 0 cédigo esta funcional implementando o cédigo que cria instancias das classes e usa a serializacao com Reflection. Abra 0 arquivo Program e inclua o cédigo a seguir no método Main() static void Main(string{] args) ( var cliente = new Cliente() wn. macorat ne 16/1/¢_reflec2 him 2s ranao1e CCH - Usando Retlection na prica-I Id = 10, Nome = "Macoratti’, Endereco = "Rua Projetada, 100 % var pedido = new Pedido() Id =1, Clienteld = 1, DataPedido = DateTime.Now % var produto = new Produto Id=1, Nome = “Caderno", Preco = 3.99M, Estoque = 35, Entrada = DateTime.Now, Saida = null, Validade = DateTime.Now.AddDays(720), Ativo = true % var resultadot = SerializarObjetoParadson(cliente); var resultado2 = SerializarObjetoParaJson(pedido); var resultado3 = SerializarObjetoParaJson(produto); Console.WriteLine(resultado1); Console.WriteLine("\n"); Console.WriteLine(resultado2); Console,WriteLine("\n"); Console.WriteLine(resultado3); Console.Readkey(); ) Executando o projeto teremos 0 seguinte resultado Podemos verificar se 0 resultado possui o formato JSON correto realizando a validacao no site http://jsonlint.com/ wn. macorat ne 16/1/¢_reflec2 him ranao1e CCH - Usando Retlection na prica-I Basta copiar o resultado gerado, colar no site e clicar no botao Validate JSON para obter o resultado €) © [jentntcon JSONLint “The 1501 Validator Download Chrome for work Entorprise Browse: Solution for Your Org Deploy Chrome Now! Go f Validate ISON Clear Results Enea ces Pegue o projeto completo aqui: Reflect izacao. Ninguém pode servir a dois senhores; porque ou hé de odiar um e amar o outro, ou se dedicaré a.um e desprezara 0 outro. Nao podeis servir a Deus e a Mamom. Mateus 6:24 Neja os Destaques e novidades do SUPER DVD Visual Basic |(sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? + Veja mais sistemas completos para a plataforma -NET no Super DVD .NET , confira... + Curso Basico VB .NET - Video Aulas Quer aprender C# 7? + Chegou o Super DVD C# com exclusivo material de suporte e video aulas com curso basico sobre C#. + Curso C# Bas ideo Aulas Quer aprender os conceitos da Programacao lorientada a objetos ? + Curso Fundamentos da Programacdo Orientada a Objetos com VB.NET 1 (Quer aprender o gerar relatérios com o ReportViewer no VS 2013? wn. macorat ne 16/s1/¢_reflec2 hm sanaeo1e CCH - Usando Retlection na prica-I + Curso - Gerando Relatérios com o ReportViewer no VS 2013 - Video Aulas Quer aprender a criar aplicacées Web Dinamicas lusando a ASP NET MVC 5? + Curso ASP .NET MVC 5 - Video Aulas. Gostou? Ed Compartithe no Facebook (J Compartithe no Twitter Referéncias: + Secdo VB NET do Site Macoratti.net + Super DVD .NET - A sua porta de entrada na plataforma NET + Super DVD Video Aulas - Video Aula sobre VB NET, ASP NET e C# + Secdo C# do site Macoratti.net + Super DVD c# + Super DVD Visual Basic + Curso Basico VB NET - Video Aulas + Curso C# Basico - Video Aul: + Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net + Visual Studio - Dica de produtividade - Nuget - Macoratti.net + Cit - Obtendo informacdes do Assembly - Macorattinet . - ui - ie + Revisitando NET Assemblies - Macorattinet + C# - Reflection ¢ Metadata - Macoratti.net + NET - 0 suporte a linguagens dindmicas - Macorattinet + Cit - Reflection @ Metadata - Macoratti.net José Carlos Macoratti wn. macorat ne 16/1/¢_reflec2 him

You might also like