Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

O metodo não funfa :/

Estou tentando seguir o que o professor disse, porem esta dando um erro, e não faço ideia do que esta acontecendo com o metodo Logar, ele fica sublinhado e parece o seguinte erro:

Acessibilidade inconsistente: tipo de parâmetro "Diretor" é menor acessível do que o método "SistemaInterno.Logar(Diretor,string)"

Meu método principal

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Bytebank;
using Bytebank.Funcionarios;
using ByteBank.Funcionarios;
using ByteBank.Sistemas;

namespace ByteBank{
    class Program{
        static void Main(string[] args){

            //GerenciadorBonificacao();
            UsarSistema();
            Console.ReadLine();
        }


        public static void GerenciadorBonificacao() {

            GerenciadorBonificacao gerenciadorBonificacao = new GerenciadorBonificacao();

            Funcionario Bianca = new Designer("833.222.048-39");
            Bianca.NomeSacado = "Pedro";

            Funcionario roberta = new Diretor("159.753.398-04");
            roberta.NomeSacado = "Roberta";

            Funcionario igor = new Auxiliar("981.198.778-53");
            igor.NomeSacado = "Igor";

            Funcionario camila = new GerenteDeConta("326.985.628-89");
            camila.NomeSacado = "Camila";

            Desenvolvedor guilherme = new Desenvolvedor("456.175.468-20");
            guilherme.NomeSacado = "Guilherme";

            gerenciadorBonificacao.Registrar(guilherme);
            gerenciadorBonificacao.Registrar(Bianca);
            gerenciadorBonificacao.Registrar(roberta);
            gerenciadorBonificacao.Registrar(igor);
            gerenciadorBonificacao.Registrar(camila);

            Console.WriteLine("Total de bonificações do mês " +
                gerenciadorBonificacao.GetTotalBonificacao());

        }

        public static void UsarSistema() {
            SistemaInterno st = new SistemaInterno();

            Diretor roberta = new Diretor("159.753.398-04");
            roberta.NomeSacado = "Roberta";
            roberta.Senha      = "123";

            st.Logar(roberta, "123");

        }

        public static void Call(string Mensagem) {
            Console.WriteLine(Mensagem);
         }

         public static bool VerificaValor(string valor) {
            if(String.IsNullOrEmpty(valor.Trim()) && valor != "") {
                return true;
            } else {
                return false;
            }
         }

    }
}
using Bytebank.Funcionarios;
using ByteBank.Funcionarios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank.Sistemas {
    public class SistemaInterno {

        public bool Logar(Diretor funcionario, string senha) {
            bool usuarioAutenticado = funcionario.Autenticar(senha);

            if(usuarioAutenticado) {
                Console.WriteLine("Bem-vindo ao sistema!");
                return true;
            } else {
                Console.WriteLine("Senha incorreta!");
                return false;
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank.Funcionarios {
    public abstract class Funcionario {
        //Variaveis ===================
        public string NomeSacado { get; set; }
        public string CPFCNPJ { get; private set; }
        public double Salario { get; set; }
        private int _tipo;
        public string Cargo { get; set; }
        public static int TotalDeFuncionarios { get; private set; }
        //============================================

        public Funcionario(string cpfcnpj) {
            Console.WriteLine("Criando funcionario:");
            CPFCNPJ = cpfcnpj;
            TotalDeFuncionarios++;

        }

        public abstract void AumentarSalario();
        public abstract double GetBonificacao();

    }
}
using ByteBank.Funcionarios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Bytebank.Funcionarios {
    class Diretor : Funcionario {
        public string Senha { get; set; }

        public Diretor(string cpfcnpj) : base(cpfcnpj) {

            Console.WriteLine("Criando Diretor");
        }

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

        public override void AumentarSalario() {
            Salario *= 1.15;
        }

        public override double GetBonificacao() {
            return Salario * 0.5;
        }

    }
}

Alguém me ajudar por favor.

3 respostas
solução!

Bom dia, Referente ao erro mencionado é poque o Método Diretor não está definido como public e o método logar está. Logo a sugestão é verificar a acessibilidade dos seus códigos, como por exemplo deixar o Método Diretor como Público. Até onde me lembro quando você não define o nivel de acesso da classe, método ou propriedade, por default a mesma fica sendo Private.

At.,

Torne a classe Diretor publica.

public class Diretor.

public - O acesso não é restrito.

protected - O acesso é limitado à classe que os contém ou aos tipos derivados da classe que os contém.

internal - O acesso é limitado ao assembly atual.

private - O acesso é limitado ao tipo recipiente.

No caso, como não foi declarado o "modificador de acesso, este por default é internal.