none
Lendo todas as propriedades de um objeto RRS feed

  • Pergunta

  • Boa noite pessoal. Tudo bem?

    Venho pedir a ajuda de vocês para ler todos as propriedades de um objeto. 

    Neste caso eu estou executando métodos de uma DLL, e ela retorna objetos complexo.

    Após pesquisar na internet encontrei um código que adapte para as minhas necessidades, mas infelizmente em um determinado ponto ocorre a seguinte exceção: "A contagem dos parâmetros não coincide."

    O erro ocorre quando lê um objeto que contém uma lista e um e-mail, conforme imagem abaixo:

     

    Quanto vou obter as propriedades do objeto, o objeto é o e-mail literal. Veja imagem abaixo.

    Agradeço a ajuda desde já.

    Segue abaixo método completo.

       public static void LerObjeto(object obj)
            {
    
                var tipoObj = obj.GetType();    //Pega tipo do Obj
                PropertyInfo[] propriedadesObj = tipoObj.GetProperties(); //Pega as propriedades do obj
                
                foreach (var propriedade in propriedadesObj)  //Varre as propriedades
                {
                    object propValue = propriedade.GetValue(obj,null);       // Pega conteudo da propriedade
                    var elems = propValue as IList;
    
                    if (elems != null)
                    {
                        foreach (var item in elems)
                        {
                            LerObjeto(item);
                        }
                    }
                    else
                    {
                        if (propriedade.PropertyType.Assembly == tipoObj.Assembly)
                        {
                            Console.WriteLine(" Nome: {0}", propriedade.Name);
                            LerObjeto(propValue);
    
                        }
                        else
                        {
                            Console.WriteLine("{0}: {1}", propriedade.Name, propValue);
                        }
                    }
                }
            }

    Abs.


    Renato Mello

    segunda-feira, 17 de agosto de 2020 23:15