Eu estou com um problema, quando eu adiciono um álbum o meu prog não está guardando essa informação, o mais estranho é que aparentemente todas as minhas classes estão corretas.
Minha classe Album :
namespace ScreenSound.Modelos;
internal class Album : IAvaliavel
{
private List<Musica> musicas = new List<Musica>();
private List<Avaliacao> notas = new List<Avaliacao>();
public Album(string nome)
{
Nome = nome;
}
public string Nome { get; }
public int DuracaoTotal => musicas.Sum(m => m.Duracao);
public List<Musica> Musicas => musicas;
public double Media
{
get
{
if (notas.Count == 0) return 0;
else return notas.Average(a => a.Nota);
}
}
public void AdicionarMusica(Musica musica)
{
musicas.Add(musica);
}
public void ExibirMusicasDoAlbum()
{
Console.WriteLine($"Lista de músicas do álbum {Nome}:\n");
foreach (var musica in musicas)
{
Console.WriteLine($"Música: {musica.Nome}");
}
Console.WriteLine($"\nPara ouvir este álbum inteiro você precisa de {DuracaoTotal}");
}
public void AdicionarNota(Avaliacao nota)
{
notas.Add(nota);
}
public static int ContadorDeObjetos = 0;
public Album()
{
ContadorDeObjetos++;
}
}
E minha classe para avaliar album:
using ScreenSound.Modelos;
namespace ScreenSound.Menus;
internal class MenuAvaliarAlbum : Menu
{
public override void Executar(Dictionary<string, Banda> bandasRegistradas)
{
base.Executar(bandasRegistradas);
ExibirTituloDaOpcao("Avaliar album");
Console.Write("Digite o nome da banda que deseja avaliar: ");
string nomeDaBanda = Console.ReadLine()!;
if (bandasRegistradas.ContainsKey(nomeDaBanda))
{
Banda banda = bandasRegistradas[nomeDaBanda];
Console.Write("Agora digite o título do álbum: ");
string tituloAlbum = Console.ReadLine()!;
if (banda.Albuns.Any(x => x.Nome.Equals(tituloAlbum)))
{
Album album = banda.Albuns.First(x => x.Nome.Equals(tituloAlbum));
Console.Write($"Qual a nota que o album {tituloAlbum} merece: ");
Avaliacao nota = Avaliacao.Parse(Console.ReadLine()!);
album.AdicionarNota(nota);
Console.WriteLine($"\nA nota {nota.Nota} foi registrada com sucesso para o album {tituloAlbum}");
Thread.Sleep(2000);
Console.Clear();
}
else
{
Console.WriteLine($"\nO album {tituloAlbum} não foi encontrado!");
Console.WriteLine("Digite uma tecla para voltar ao menu principal");
Console.ReadKey();
Console.Clear();
}
}
}
}