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

Dúvida exercicio 5 Design Patterns I

Olá Pessoal.

Estava tentando deixar meus outros impostos IKCV, ICCC flexíveis para que fossem decorados e decorar outros impostos mas uma chuva de erros apareceram :)) ...Só um exemplo: Meu imposto IKCV ficou assim:

 public class IKCV : TemplateDeImpostoCondicional
    {
        public IKCV() : base() { }

        public IKCV(Imposto outroImposto) : base(outroImposto) { }

        public override bool DeveUsarMaximaTaxacao(Orcamento orcamento)
        {
            return orcamento.Valor > 500 && TemItemMaiorQue100ReaisNo(orcamento);
        }

        public override double MaximaTaxacao(Orcamento orcamento)
        {
            return orcamento.Valor * 0.10;
        }

        public override double MinimaTaxacao(Orcamento orcamento)
        {
            return orcamento.Valor * 0.06;
        }


        private bool TemItemMaiorQue100ReaisNo(Orcamento orcamento)
        {
            foreach (Item item in orcamento.Itens)
            {
                if (item.Valor > 100) return true;
            }
            return false;
        }

        public override double Calcula(Orcamento orcamento)
        {
            return orcamento.Valor * 0.01 + CalculoDoOutroImposto(orcamento);
        }
    }

e já ficou marcado o IKCV com a mensagem 'IKCV' does not implement inherited abstract member 'Imposto.Calcula(Orcamento).

E também ficou sublinhado de vermelho o Calcula com a mensagem: 'IKCV.Calcula(Orcamento)': cannot override inherited member 'TemplateDeImpostoCondicional.Calcula(Orcamento)' because it is not marked virtual, abstract, or override

Não consegui achar uma solução. Nos outros impostos também ocorreram erros mas se eu achar o erro desse solucionarei dos demais.

Obrigado.

2 respostas

Olá João,

o erro dá uma ideia sobre o que está acontecendo. Ele comenta que IKCV.Calcula(Orcamento): cannot override inherited member TemplateDeImpostoCondicional.Calcula(Orcamento) because it is not marked virtual, abstract, or override. Ou seja, a sua classe TemplateDeImpostoCondicional deve estar implementando o método Calcula e na filha IKCV você tenta sobrescrever esta implementação. Porém, o método na classe TemplateDeImpostoCondicional não deve estar marcado como virtual para permitir esta sobrescrita de método.

solução!

Obrigado Lucas..vou verificar e rever as outras classes também. Eu vi de fato que há no erro uma "pista" mas minha falta de prática não consegui sair do lugar...mexi em tanta coisa para tentar resolver. .. mas beleza... obrigado pela dica.