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

Object com dois ToString()?

Olá, pessoal,

É possível adicionar object a controles (combobox, listview, etc.), sendo que o que visualizado será o override do método ToString. Imaginando que eu tenha a seguinte classe:

public class Cliente
    {
        public string Nome;
        public string Sobrenome;

        public override ToString()
        {
            return $"{Nome} {Sobrenome}";
        }
    }

E adiciono isso a um combo.

A questão é como eu faria para adicionar esse object a outro controle se dessa vez gostaria que fosse amostrado apenas a propriedade Nome.

Agradeço desde já.

2 respostas
solução!

Olá José,

Depende um pouco da tecnologia que você estiver usando. Mas tem algumas formas de resolver isto.

Você pode definir o que o combobox (SelectItem) vai exibir ao invés de simplesmente deixar o object, só tem q ver a documentação do Controle que você estiver usando pra fazer isso.

Uma outra solução é criar objetos que só servirão pra mostrar as informações na tela.. por exemplo, nesse caso do Cliente, você poderia criar um ClienteSimplesDTO somente com id e nome, e o ToString seria só o nome, e outro chamado ClienteCompletoDTO, que seria similar ao que você mostrou acima, com nome e sobrenome (talvez até mais informações), no fim basta você usar cada objeto em um combo diferente.

Perceba que este DTO do nome aí em cima é um padrão usado pra objetos de transferência de valor. As vezes é útil quando queremos somente parte de um objeto ou quando queremos objetos contendo informações de mais de um objeto existente.

E ai, Luan,

Muito obrigado pela resposta!

Me ajudou a resolver o problema. Segui a ideia dos DTOs.

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