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

[Dúvida] Criando uma lista com composição de classe

Bom dia. Estou enfrentando um problema ao criar uma lista de objetos que possuem uma composição de classe. vamos ao problema:

Quando crio uma classe com uma composição, ao instanciar meu objeto eu tenho que instanciar ele nas duas classes, como exemplo:

        Printer printer2 = new Printer();
        printer2.ZplParam = new Parametros();
        printer2.ZplParam.Ip = IPAddress.Parse(textBox2.Text);
        printer2.ZplParam.Porta = Convert.ToInt32(textBox1.Text);
        printer2.ZplParam.Bitola = textBox3.Text;

A minha Variável "ZplParam" Recebe as informações de uma outra classe chamada "Parametros" por isso tenho que apontar meu objeto "Printer2" a minha classe Parametros, e irá funcionar perfeitamente.

Porém, estou tentando fazer uma lista de objetos que possuem a mesma regra, da seguinte forma:

                            List<Printer> impressoras = new List<Printer>();
                                        impressoras.Add(new Printer()
                                        {
                                            Ip = "192.168.10.20",
                                            Porta = 1000,

                                        });
                                        impressoras.Add(new Printer()
                                        {
                                            Ip = "192.168.10.21",
                                            Porta = 1000,

                                        });
                                        impressoras.Add(new Printer()
                                        {
                                            Ip = "192.168.10.22",
                                            Porta = 1000,

                                        });

Porém as minhas variaveis "IP" e "Porta" estão dando erro porque elas não estao presentes na Classe "Printer" e sim na classe "Parametros". como eu aplico o mesmo conceito de apontar um objeto para outra classe em uma lista ? Abaixo segue as minhas classes:

public class Printer {

    private string Zpl { get; set; }
    public Parametros ZplParam;


    ______________________________________________________________________________________________
  public class Parametros
    {
        public string Head { get; set; }
        public string Body { get; set; }
        public string comp { get; set; } //complemento
        public string comp2 { get; set; } //complemento
        public string comp3 { get; set; } //complemento
        public string Bitola { get; set; } //Formato 38 X 200 X 2600MM
        public string DataMatrix { get; set; } //Formato: i1234567890abcf
        public string ClasseResist { get; set; } //Formato: A12
        public string NPedido { get; set; } // Formato: 1234
        public string NProducao { get; set; } //Formato: 23010001
        public string Footer { get; set; }
        public DateTime DateTime { get; set; } //dd/mm/aaaa HH:MM:SS
        public string LinkGradeador { get; set; }
        public string LinkClassificador { get; set; }

        public string LinkFingerJoint { get; set; }
        public IPAddress Ip { get; set; }
        public int Porta { get; set; }
    }
}
3 respostas
solução!

Para criar uma lista de objetos que possuem uma composição de classe, basta adicionar os objetos da mesma forma que você está fazendo, mas lembrando de inicializar os objetos da classe composta corretamente. Por exemplo:

List<Printer> impressoras = new List<Printer>();

impressoras.Add(new Printer()
{
    ZplParam = new Parametros()
    {
        Ip = IPAddress.Parse("192.168.10.20"),
        Porta = 1000
    }
});

impressoras.Add(new Printer()
{
    ZplParam = new Parametros()
    {
        Ip = IPAddress.Parse("192.168.10.21"),
        Porta = 1000
    }
});

impressoras.Add(new Printer()
{
    ZplParam = new Parametros()
    {
        Ip = IPAddress.Parse("192.168.10.22"),
        Porta = 1000
    }
});

Assim, cada objeto da classe Printer terá uma instância da classe Parametros associada a ele, e você poderá acessar as propriedades da classe Parametros através do objeto da classe Printer.

Espero que isso ajude a solucionar o seu problema! Se tiver mais alguma dúvida ou precisar

Muito Obrigado Diogo, funcionou aqui !

se puder marca a minha resposta como solução por favor