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

Uso da interface IAutenticavel como parâmetro

Bom dia! No último tópico do curso 3 de C#, na classe SistemaInterno, o instrutor usa a interface IAutenticavel como parâmetro como se segue: public void Logar(IAutenticavel funcionario, string senha). Esse método Logar acima recebe um funcionário e uma senha como parâmetros. A minha dúvida é quanto ao parâmetro IAutenticavel funcionario, e mais especificamente sobre o fato de um tipo "Interface" receber um tipo "Funcionário". Isso pode ser considerado um upcasting? Similar ao que acontece na herança de classes? Fiz um teste tirando a implementação da interface IAutenticavel de FuncionarioAutenticavel e tive o seguinte erro em tempo de execução: O build falhou. Deseja continuar a Depuração? e ao clicar em sim, o programa executa normalmente. Ao retomar a implementação da interface IAutenticavel na classe FuncionarioAutenticavel, esse erro não aparece e a aplicação é executada normalmente.

2 respostas
solução!

Isso pq quando vc chama uma função que tem um parâmetro como interface vc precisar passar um objeto que implementa a interface (implements). O que pode acontecer é se uma classe pai implementar a interface vc n precisa especificar na classe filha pq ela vai implementar com a herança do pai. https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/keywords/interface

Pelo que entendi é uma espécie de upcasting mesmo. É porque estranhei esse comportamento em se tratando de interfaces, mas assim como as classes, as interfaces também estendem Object, e dessa forma a regras da herança de classes também se aplicam as interfaces. Obrigado por responder Sérgio!