Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao tentar usar método de mostrar os detalhes

Primeiramente percebi que os que conseguiram estão usando a linguaguem de alto padrão, no meu caso não, sim ainda tem o void Main na program. Estou com erro de tipo ao tentar usar o método que printa os resultados na tela, segue o código :

 static async Task Main(string[] args)
        {
            try
            {

                HttpClient client = new HttpClient();
                string response = await client.GetStringAsync("https://www.anapioficeandfire.com/api/characters/16")!;
                Console.WriteLine(response);
                var obj = JsonSerializer.Deserialize<Model>(response);
                Console.WriteLine(obj.Gender);
                Console.WriteLine(obj.Name);
                Console.WriteLine(obj.Culture);
                Console.WriteLine(obj.ShowDetails()); //erro aq

            }
            catch (Exception ex) 
            {
                Console.WriteLine(ex.Message);
            }
        }

Como podem ver tive que mudar o Main de void para Task para usar o await na requisição e mudar para async tambem. Minha classe modelo :

         [JsonPropertyName("name")]
        public string? Name { get; set; }

        [JsonPropertyName("gender")]
        public string? Gender { get; set; }

        [JsonPropertyName("culture")]
        public string? Culture { get; set; }

        public void ShowDetails()
        {
            Console.WriteLine($"Nome: {Name}");
            Console.WriteLine($"Gênero: {Gender}");
            Console.WriteLine($"Cultura: {Culture}");
        }

Exatamente igual ao exemplo porem, depois de uns 2 3 dias tentando entender oq fiz de errado, lembrei que não uso a "linguagem de auto nivel" (esqueci o nome que chama). Basicamente tá reclamando que não posso converter de void para bool, essa parte entendi, porém não tenho certeza de como contornar isso ? Pensei em criar um construtor? e printar os parâmetros recebidos, enfim quem puder me ajudar kkkkkkk

1 resposta
solução!

Olá, Iagor! Parece que você está fazendo um ótimo trabalho com a API do Game of Thrones e C#.

O erro que você está encontrando é porque você está tentando exibir o resultado do método ShowDetails(), que é um método void. Métodos void não retornam nenhum valor, então você não pode usá-los como argumento para Console.WriteLine(), que espera algum tipo de valor a ser impresso.

No seu caso, ShowDetails() já está fazendo a impressão dos detalhes, então você não precisa usar Console.WriteLine() para chamá-lo. Você pode simplesmente chamar obj.ShowDetails(); sem o Console.WriteLine().

Seu código ficaria assim:

static async Task Main(string[] args)
{
    try
    {
        HttpClient client = new HttpClient();
        string response = await client.GetStringAsync("https://www.anapioficeandfire.com/api/characters/16")!;
        Console.WriteLine(response);
        var obj = JsonSerializer.Deserialize<Model>(response);
        Console.WriteLine(obj.Gender);
        Console.WriteLine(obj.Name);
        Console.WriteLine(obj.Culture);
        obj.ShowDetails(); // chamada correta do método
    }
    catch (Exception ex) 
    {
        Console.WriteLine(ex.Message);
    }
}

Espero ter ajudado e bons estudos!