Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Erro de compilação: acessibilidade inconsistente

Olá. Quando mudei a classe AutenticacaoUtil de public para internal, o compilador está apresentando 2 erros:

Acessibilidade inconsistente: tipo de propriedade "AutenticacaoUtil" é menos acessível do que a propriedade "FuncionarioAutenticavel.Autenticador"; Acessibilidade inconsistente: tipo de propriedade "AutenticacaoUtil" é menos acessível do que a propriedade "ParceiroComercial.Autenticador".

Baixei o projeto no começo do curso, também baixei o do começo da Aula 2, mesmo assim acabo tendo esses erros.

1 resposta
solução!

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:

  1. 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; }
        // ...
    }
    
  2. 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!