Amigos,
No escopo do projeto que se apresenta , uma vez que sempre autenticamos o usuário pelo método Logar da classe SistemaInterno, qual seria a forma de inibir o uso do método Autenticar na implementação sem passar pela verificação do método Logar deixando a chamada abaixo inválida?
public static void UsarSistema()
{
SistemaInterno sistemaInterno = new SistemaInterno();
ParceiroComercial parceiro = new ParceiroComercial();
parceiro.Senha = "123456";
parceiro.Autenticar("1234");
}
Tentei, por exemplo, implementar nas classes FuncionarioAutenticavel e ParceiroComercial o método com a visibilidade protected, mas isso invalidou a herança da interface IAutenticável por essas classes.
public abstract class FuncionarioAutenticavel : Funcionario, IAutenticavel
{
public string Senha { get; set; }
public FuncionarioAutenticavel(double salario, string cpf)
: base(salario, cpf)
{
}
protected bool Autenticar(string senha)
{
return Senha == senha;
}
}
Há alguma solução conhecida ou este método é sempre público?