Olá Gian! Bom dia!
Parece que você está enfrentando um problema de acessibilidade inconsistente devido à mudança da visibilidade da classe AutenticacaoUtil
de public
para internal
. Quando uma classe é marcada como internal
, ela só pode ser acessada dentro do mesmo assembly, ou seja, dentro do mesmo projeto. Isso significa que qualquer propriedade ou método que utilize essa classe deve ter um nível de acessibilidade que seja igual ou mais restrito.
No seu caso, as propriedades Autenticador
nas classes FuncionarioAutenticavel
e ParceiroComercial
estão utilizando a classe AutenticacaoUtil
. Se essas propriedades são públicas, então a classe AutenticacaoUtil
também precisa ser pública para que não haja inconsistência. Caso contrário, você pode alterar a visibilidade das propriedades Autenticador
para internal
, para que correspondam à visibilidade da classe AutenticacaoUtil
.
Aqui está o que você pode fazer:
Alterar a visibilidade das propriedades Autenticador
:
Se AutenticacaoUtil
deve permanecer internal
, então as propriedades Autenticador
em FuncionarioAutenticavel
e ParceiroComercial
também devem ser internal
.
public abstract class FuncionarioAutenticavel : Funcionario, IAutenticavel
{
public string Senha { get; set; }
internal AutenticacaoUtil Autenticador { get; set; }
// ...
}
public class ParceiroComercial : IAutenticavel
{
public string Senha { get; set; }
internal AutenticacaoUtil Autenticador { get; set; }
// ...
}
Manter AutenticacaoUtil
como public
:
Se as propriedades Autenticador
devem ser públicas, então a classe AutenticacaoUtil
precisa ser pública.
public class AutenticacaoUtil
{
public bool ValidarSenha(string senhaverdadeira, string senhatentativa)
{
return senhaverdadeira.Equals(senhatentativa);
}
}
Escolha a abordagem que melhor se adequa à sua necessidade de encapsulamento e segurança. Espero ter ajudado e bons estudos!