2
respostas

Encapsulamento de Senha

Opa, eu estou tentando encontrar uma forma de encapsular a propriedade 'Senha' das classes que implementam a interface 'IAutenticavel', mas utilizar os modificadores de acesso como 'protected' e 'private' dentro da interface gera um erro, não é permitido.

public interface IAutenticavel 
    {
        string Senha { get; protected set; }

        bool Autenticar(string senha)
        {
            return Senha == senha;
        }
    }

Eu posso em qualquer ponto do meu código acessar e mudar a propriedade Senha de qualquer objeto IAutenticavel.

ParceiroComercial parceiro = new ParceiroComercial("senha123");

parceiro.Senha = "1231"; //propriedade completamente exposta para mudança.

Como posso resolver esse problema?

2 respostas

Pedro, bom dia.

Defina a propriedade Senha como protected ou private nas classes concretas ParceiroComercial e FuncionarioAutenticavel . Teste e nos dê um feedback blz?

Espero ter ajudado.

Boa tarde André.

Eu já havia testado essa possibilidade, isso gera um erro (CS0277) dizendo que ParceiroComercial não implementa membro da interface IAutenticavel.Senha.set, porque ParceiroComercial.Senha.set não é público.