Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mitaco

Como identificar um objeto concreto dentro de um objeto Pai

Recommended Posts

Senhores boa tarde, estou montando um método de Exportar dados do BD para Excel dinâmico, dividi essa tarefa em 3 partes.

1 - Preencho um objeto com os dados retornados do BD

2 - Com a lista de objetos gero um DataTable

3 - Com o DataTable gero o Excel.

 

Minha dúvida quanto a isso é a seguinte. Tenho um objeto Pai, ele possui um objeto Filho que por sua vez uma lista de Netos. Gostaria de saber como eu poderia identificar se o dado no momento do Loop é uma propriedade de um Objeto concreto ou uma propriedade comum(string, int, long, etc..).

 

Segue a baixo o exemplo do meu código atual:

        public DataTable ToDataTable<T>(List<T> items)
        {
            DataTable dataTable = new DataTable(typeof(T).Name);

            PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
            foreach (PropertyInfo prop in Props)
            {
                dataTable.Columns.Add(prop.Name);
            }

            foreach (T item in items)
            {
                var values = new object[Props.Length];

                for (int i = 0; i < Props.Length; i++)
                {
                    values[i] = Props[i].GetValue(item, null);
                }

                dataTable.Rows.Add(values);

            }

            return dataTable;
        }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kahos obrigado. De fato já estou utilizando o typeof.IsAssignableFrom(typeof("MinhaInterface")), porém mesmo o objeto implementando minha interface ele retorna false. Não sei se estou tendo este problema talvez por falta de experiência. Minha ideia é percorrer todos os objetos e caso eu encontrar um objeto que não seja nativo(Que certamente se não for nativo será o meu) percorre-lo também recursivamente, até encontrar todos os dados e popular o DataTable.

 

Você tem alguma sugestão ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.