Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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;
}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 ?
Se você tem o nome do seu objeto então você pode percorrê-lo usando o ID.
Você pode tentar usar o typeof(Object) para saber o tipo de objeto.