Boa noite,
Tentei inserir o nome do usuário que fez login junto a mensagem de boas-vindas ao sistema interno, fazendo dessa forma:
public class SistemaInterno
{
public bool Logar (IAutenticavel usuario, string login, string senha)
{
bool usuarioAutenticado = usuario.Autenticar(login,senha);
if(usuarioAutenticado == true)
{
Console.WriteLine($"{usuario.Nome}, bem-vindo ao sistema interno");
return true;
}
else
{
Console.WriteLine("login e/ou senha incorreto");
return false;
}
}
Porém me retorna um erro, informando que a interface IAutenticavel, não possui um atributo nome em seu corpo. Porém as classes que "assinaram esse contrato" possuem, que seriam as que herdarem FuncionarioAutenticavel, ja que está herda de Funcionario e a ParceiroComercial por si só possui tem um Nome em seu corpo. Para corrigir esse erro a princípio fiz assim:
public interface IAutenticavel
{
public string Nome { get; set; }
public bool Autenticar(string usuario, string senha);
}
Existe algum problema em adicionar esse atributo Nome ao corpo da interface? Pelo o que eu pesquisei, vi que não tem tanto problema, mas não é uma boa prática e o ideal seria criar uma interface apenas para Dados, então fiz uma nova interface IAutenticavelDados:
public interface IAutenticavelDados
{
public string Nome { get; set; }
}
Dessa maneira, apaguei o atributo Nome da interface IAutenticavel e fiz com que ela "assine o contrato" com essa nova interface IAutenticavelDados, assim não apresentou nenhum erro, porém também não sei se está correto