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

Compilador nao me deixa usar public no metodo GetValor

Sempre que coloco o metodo GetValor como public fica vermelho e nao me deixa compilar, e se nao for public nao consigo utilizar no program. Ja tentei (ctrl + . ) mas mesmo assim nao consegui encontrar o erro.

public string GetValor(string nomeParametro)

            {
                nomeParametro = nomeParametro.ToUpper();
                string argumentoEmCaixaAlta = _argumentos.ToUpper();

                string termo = nomeParametro + "=";
                int indicetermo = argumentoEmCaixaAlta.IndexOf(termo);

                string resultado = _argumentos.Substring(indicetermo + termo.Length);
                int indiceEComercial = resultado.IndexOf('&');

                if(indiceEComercial == 0)
                {
                    return resultado;
                }
                return resultado.Remove(indiceEComercial);
            }
2 respostas
solução!

Olá Mailson, tudo bem?

Fiz o teste e deu tudo certo por aqui. Encontrei um problema parecido, ao colocar o método GetValor dentro do construtorExtratorValorDeArgumentosURL. Desta forma:

public ExtratorValorDeArgumentosURL(string url)
        {
            if(String.IsNullOrEmpty(url))
            {
                throw new ArgumentException("O argumento url não pode ser nulo ou vazio.", nameof(url));
            }

            int indiceInterrogacao = url.IndexOf('?');
            _argumentos = url.Substring(indiceInterrogacao + 1);

            URL = url;

            public string GetValor(string nomeParametro)
            {
                nomeParametro = nomeParametro.ToUpper();
                string argumentoEmCaixaAlta = _argumentos.ToUpper();

                string termo = nomeParametro + "=";
                int indicetermo = argumentoEmCaixaAlta.IndexOf(termo);

                string resultado = _argumentos.Substring(indicetermo + termo.Length);
                int indiceEComercial = resultado.IndexOf('&');

                if (indiceEComercial == 0)
                {
                    return resultado;
                }
                return resultado.Remove(indiceEComercial);
            }
        }

O correto seria:

public ExtratorValorDeArgumentosURL(string url)
        {
            if(String.IsNullOrEmpty(url))
            {
                throw new ArgumentException("O argumento url não pode ser nulo ou vazio.", nameof(url));
            }

            int indiceInterrogacao = url.IndexOf('?');
            _argumentos = url.Substring(indiceInterrogacao + 1);

            URL = url;

        }


 public string GetValor(string nomeParametro)
        {
            nomeParametro = nomeParametro.ToUpper();
            string argumentoEmCaixaAlta = _argumentos.ToUpper();

            string termo = nomeParametro + "=";
            int indicetermo = argumentoEmCaixaAlta.IndexOf(termo);

            string resultado = _argumentos.Substring(indicetermo + termo.Length);
            int indiceEComercial = resultado.IndexOf('&');

            if (indiceEComercial == 0)
            {
                return resultado;
            }
            return resultado.Remove(indiceEComercial);
        }

Poderia confirmar se é esse o problema? Se não for, poderia detalhar melhor o problema?(código do erro, a classe completa)

Aguardo retorno!

Foi exatamente este o problema. Muito obrigado. :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software