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

Dúvida no Exercício 7 - FN14

Estou recebendo o erro:

Error 1 Inconsistent accessibility: parameter type 'ExercicioCap1.ITributavel' is less accessible than method 'ExercicioCap1.GerenciadorDeImposto.Adiciona(ExercicioCap1.ITributavel)' C:\Users\Guilherme\documents\visual studio 2013\Projects\ExercicioCap1\ExercicioCap1\GerenciadorDeImposto.cs 13 21 ExercicioCap1

Gostaria de saber como posso corrigir este problema. Minhas classes são:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExercicioCap1
{
    interface ITributavel
    {

        double CalculaTributos();

    }
}
namespace ExercicioCap1
{
    class SeguroDeVida: ITributavel
    {

        public double CalculaTributos()
        {
            return 42;
        }

    }
}

namespace ExercicioCap1
{
    public class GerenciadorDeImposto
    {
        public double Total { get; private set; }

        public void Adiciona(ITributavel tributavel)
        {
            this.Total += tributavel.CalculaTributos();
        }
    }
}

E estou chamando assim no form_load

GerenciadorDeImposto gerenciador = new GerenciadorDeImposto();
ContaPoupanca cp = new ContaPoupanca();
SeguroDeVida sv = new SeguroDeVida();
gerenciador.Adiciona(cp);
gerenciador.Adiciona(sv);
MessageBox.Show("Total: " + gerenciador.Total);
3 respostas
solução!

Oi Guilherme

Esse problema é descrito nesse exercício do primeiro capítulo do curso que você está fazendo: http://www.alura.com.br/course/FN-14/section/1/exercise/8

O problema acontece toda vez que você cria uma classe pública que possui algum método ou propriedade pública que usa um tipo com uma visibilidade menor.

No seu caso, o GeradorDeImpostos é uma classe pública com o método público Adiciona que recebe o tipo ITributavel que não é público. Para corrigir o problema, faça com que a interface ITributavel seja uma interface pública.

Obrigado pela resposta Victor.

Eu pensei neste problema e havia tentado colocar a interface ITributavel como public, porém continuava a aparecer o erro, então voltei o código da forma descrita no exercício e postei aqui. Irei tentar realizar a correção novamente mais tarde e verificar se soluciona o problema, pode ser até que não tenha feito corretamente. Se não funcionar volto a entrar em contato.

Deu certo Victor, obrigado pela ajuda!

Foi falta de atenção minha, eu cheguei a mudar a interface pra public mas não testei, pois no Visual Studio continuava acusando o problema, após executar o código o erro sumiu!