Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Como o compilador faz a associação do tipo dinamico mensagem com a classe Mensagem?

public void Executar()
        {
            string Json = "{\"De\": \"Everson Souza\", " +
            "\"Para\": \"Dr. Paulo\"}";

            dynamic mensagem = JsonConvert.DeserializeObject<ExpandoObject>(Json);
            mensagem.Texto = "Ola grande mestre " + mensagem.De;
            EnviarMensagem(mensagem);
        }

        public void EnviarMensagem(dynamic msg)
        {
            System.Console.WriteLine($"De: {msg.De}");
            System.Console.WriteLine($"Para: {msg.Para}");
            System.Console.WriteLine($"Texto: {msg.Texto}");
            System.Console.WriteLine();
        }
    }

    internal class Mensagem
    {
        public string De { get; set; }
        public string Para { get; set; }
        public string Texto { get; set; }
    }

porque nesse trecho aqui abaixo não tem nenhuma ligação com a classe mensagem:

{
            string Json = "{\"De\": \"Everson Souza\", " +
            "\"Para\": \"Dr. Paulo\"}";

            dynamic mensagem = JsonConvert.DeserializeObject<ExpandoObject>(Json);
            mensagem.Texto = "Ola grande mestre " + mensagem.De;
            EnviarMensagem(mensagem);
        }

        public void EnviarMensagem(dynamic msg)
        {
            System.Console.WriteLine($"De: {msg.De}");
            System.Console.WriteLine($"Para: {msg.Para}");
            System.Console.WriteLine($"Texto: {msg.Texto}");
            System.Console.WriteLine();
        }
4 respostas
solução!

Oi Everson, tudo bem?

A partir do momento que começamos a usar a classe ExpandoObject, não precisamos mais da classe Mensagem, porque as propriedades De, Para e Texto são geradas dinamicamente.

No código que você postou aqui, podemos remover a classe Mensagem, e mesmo assim o código continuará funcionando sem problemas.

ahhh entendi perfeito, caso eu quisesse utilizar uma classe eu colocaria entre os colchetes a classe, entendi

dynamic mensagem = JsonConvert.DeserializeObject<Classe>(Json);

Isso mesmo! É que a gente realmente precisa usar a classe Mensagem no começo do vídeo, antes de apresentar a classe ExpandoObject.

vc eh show espero que os demais videos saia antes de fevereiro, marquei a prova para o dia 30 de janeiro de 2019