1
resposta

[Bug] Método Override não reconhece o "Executar" da classe Menu

Método Override não reconhece o "Executar" da classe Menu. Com isso nao é possivel avaliar o album, pois ao digitar a opcao 5 ele exibe a opcao 6 que é detalhes...

using ScreenSound.Modelos; namespace ScreenSound.Menus;

internal class MenuAvaliarAlbum : Menu { public override void Executar(Dictionary<string, Banda> bandasRegistradas) { **Insira aqui a descrição dessa imagem para ajudar na acessibilidade base.Executar( **bandasRegistradas);

    ExibirTituloDaOpcao("Avaliar álbum");
    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 (a=>a.Nome.Equals(tituloAlbum)))
        {
            Album album = banda.Albuns.First(a => a.Nome.Equals(tituloAlbum));
            Console.Write($"Qual a nota que o álbum {tituloAlbum} merece: ");
            Avaliacao nota = Avaliacao.Parse(Console.ReadLine()!);
            album.AdicionarNota(nota);
            Console.WriteLine($"\nA nota {nota.Nota} foi registrada com sucesso para o álbum {tituloAlbum}");
            Thread.Sleep(2000);
            Console.Clear();
        }
        else
        {
        Console.WriteLine($"\nO Álbum {tituloAlbum} não foi encontrado!");
        Console.WriteLine("Digite uma tecla para voltar ao menu principal");
        Console.ReadKey();
        Console.Clear();
        }
    }
    else
    {
        Console.WriteLine($"\nA banda {nomeDaBanda} não foi encontrada!");
        Console.WriteLine("Digite uma tecla para voltar ao menu principal");
        Console.ReadKey();
        Console.Clear();
    }
}

}

1 resposta

Olá, Cesar.

Tudo bem?

Parece que você está enfrentando um problema com a sobrescrita do método Executar na sua classe MenuAvaliarAlbum. A mensagem de erro que você mencionou indica que o método Executar da classe base Menu não está sendo encontrado ou não é compatível com a assinatura que você está tentando sobrescrever.

Vamos verificar alguns pontos que podem estar causando esse problema:

  1. Confirme se o método Executar na classe base Menu está definido como virtual ou abstract e se possui a mesma assinatura, ou seja, recebe um Dictionary<string, Banda> como parâmetro.

  2. Verifique se não há nenhum erro de digitação ou diferença nos parâmetros do método Executar entre a classe base e a classe derivada.

  3. Certifique-se de que a classe Menu está no mesmo namespace ou que você tenha a referência correta para ele, caso esteja em um namespace diferente.

  4. Se o método Executar da classe base Menu estiver em uma biblioteca diferente, confirme se a referência para essa biblioteca está correta e atualizada.

  5. Se você estiver usando interfaces ou outras classes abstratas, certifique-se de que todas as implementações e heranças estejam corretas.

Na imagem que você compartilhou, não é possível identificar diretamente o erro, pois ela mostra apenas uma parte do código e o erro em si não está visível. No entanto, seguindo os passos acima, você deve ser capaz de identificar onde o problema está ocorrendo.

Caso você tenha seguido todos esses passos e ainda esteja enfrentando o problema, seria útil verificar o arquivo da classe base Menu para confirmar a assinatura do método Executar e compará-la com a sua implementação na classe MenuAvaliarAlbum.

Espero ter ajudado e bons estudos!