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

Existe alguma forma de remover um atributo de um objeto no retorno?

Bom dia! Sei que não tem relação com o curso, mas estou com essa dúvida aqui no trabalho. Eu tenho uma classe Retorno que possui os atributos String Descricao, bool Sucesso e int IdDoLead.

Quando ocorre tudo sem erros, o meu WS retorna o objeto Retorno com esses 3 atributos. Entretanto, quando ocorre algum erro (catch), quero que ele não retorne o atributo IdDoLead do objeto Retorno. Existe alguma forma de "remover" o atributo do objeto caso o mesmo caia na exceção? O código abaixo só possui o final da operação.

                retorno.Sucesso = true;
                retorno.Descricao = "Registro Criado Com Sucesso";
                retorno.IdDoLead = idDoLead;
            }
            catch (Exception ex)
            {
                retorno.Descricao = ex.Message;
                retorno.Sucesso = false;
                return retorno;
            }
            return retorno;
4 respostas

Oi Alex, tudo bem?

Remover o IdDoLead seria deixar ele nulo? Testa fazer assim dentro do catch?

retorno.IdDoLead = null;

abraço!

Tudo bem e com você?

Não, quero que o IdDoLead não seja retornado, pois não faz sentido se o IdDoLead não foi gerado pela aplicação. Entretanto, deixá-lo nulo é uma opção interessante também. Caso não seja possível remover o atributo IdDoLead, vou optar por deixá-lo nulo.

Oi Alex! Realmente não tem como remover o atributo da classe. :(

abraço!

solução!

É possível criar um "modelo" diferenciado para quando não ocorrer erro e outro para quando ocorrer. Use o tipo "dynamic" para isso.

            try
            {
                dynamic retorno = new
                {
                    Sucesso = true,
                    Descricao = "Registro Criado Com Sucesso",
                    IdDoLead = idDoLead
                };
                return retorno;
            }
            catch (Exception ex)
            {
                dynamic retorno = new
                {
                    Sucesso = true,
                    Descricao = "Registro Criado Com Sucesso",
                };
                return retorno;
            }

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