1
resposta

Resolução, porém no projeto final nos metodos para exibir os trabalhos aparece entre eles Alura.FIlmes.Filmes. como resolver?

namespace Alura.Filmes;

class Artista { private List filmes = new(); public Artista(string nome, int idade) { Nome = nome; Idade = idade; }

public string Nome { get; }
public int Idade { get; }

public int Duracao_total => filmes.Count;

public void Trabalho_Do_Artista(Filmes filme)
{
    filmes.Add(filme);
}

public void Exibir_Trabalhos()
{
    foreach (var trabalhos in filmes)
    {
        Console.WriteLine(trabalhos);
    }
    Console.WriteLine($"Total de filmes produzidos por {Nome}, {Duracao_total}.");
}

}

namespace Alura.Filmes;

class Filmes { private List elenco = new();

public Filmes(string titulo, int duracao)
{
    Titulo = titulo;
    Duracao = duracao;
}

public string Titulo { get; }
public int Duracao { get;  }
public string Resumo => $"Filme: {Titulo}\n Duração:{Duracao} min";

public void Elenco_Do_Filme(Artista artistas)
{
    elenco.Add(artistas);
}

public void Exibir_Conteudo()
{
    foreach (var artistas in elenco)
    {
        Console.WriteLine($"{Resumo} tem o elenco:{artistas.Nome}\n{artistas.Idade} anos de idade");
    }
    
}

}

using Alura.Filmes;

Artista leonardo = new("Leonardo", 21); Artista eduarda = new("Eduarda", 23);

Filmes hereges = new("Hereges", 320); leonardo.Trabalho_Do_Artista(hereges); eduarda.Trabalho_Do_Artista(hereges); hereges.Elenco_Do_Filme(leonardo); hereges.Elenco_Do_Filme(eduarda); hereges.Exibir_Conteudo();

Filmes pitucos = new("Pitucos", 150); leonardo.Trabalho_Do_Artista(pitucos); pitucos.Elenco_Do_Filme(leonardo); pitucos.Exibir_Conteudo(); eduarda.Exibir_Trabalhos(); leonardo.Exibir_Trabalhos();

1 resposta

Oi Leonardo,

O problema "Alura.FIlmes.Filmes" na saída do seu código se deve à falta de sobrescrita do método ToString() nas classes Filmes e Artista. Quando você usa Console.WriteLine(trabalhos), o C# chama o método ToString() do objeto trabalhos para convertê-lo em uma string para exibir no console. Como você não o sobrescreveu, ele utiliza a implementação padrão, que retorna o nome completo da classe e namespace.

Para resolver, adicione o método ToString() em ambas as classes:

namespace Alura.Filmes;

class Filmes {
    // ... (seu código existente) ...

    public override string ToString()
    {
        return Resumo;
    }
}

namespace Alura.Filmes;

class Artista {
    // ... (seu código existente) ...

    public override string ToString()
    {
        return Nome;
    }
}

Com essas alterações, Console.WriteLine(trabalhos) exibirá o conteúdo do método ToString(), que agora retorna informações relevantes (o resumo do filme ou o nome do artista), ao invés do nome completo da classe.

tux matrix    Caso este post o tenha ajudado, por favor, marcar como solucionado ☑️. Bons Estudos! 🤓