private static List <object> CriarObjetoDinamico <T>(List <T> listaValores, List <string> listaCampos)
        {
            RefletorDinamico refletor = new RefletorDinamico(typeof(T));

            List <object> listaObjetos = new List <object>();

            foreach (T item in listaValores)
            {
                Dictionary <string, object> objeto     = new Dictionary <string, object>();
                Dictionary <string, object> objetoRico = new Dictionary <string, object>();

                if (listaCampos != null && listaCampos.Count > 0)
                {
                    PopulaObjetoComCampos <T>(listaCampos, refletor, item, objeto, objetoRico);
                }
                else
                {
                    PopulaObjeto <T>(refletor, item, objeto);
                }

                listaObjetos.Add(objeto);
            }

            return(listaObjetos);
        }
Exemple #2
0
        private static PropertyInfo PopularObjetoRico(Type tipoRico, string nomeCampo)
        {
            RefletorDinamico refletor = new RefletorDinamico(tipoRico);
            object           novo     = Activator.CreateInstance(tipoRico);
            PropertyInfo     pii      = refletor.Propriedade(nomeCampo, false);

            return(pii);
        }
        private static void PopulaObjetoComCampos <T>(List <string> listaCampos, RefletorDinamico refletor, T item, Dictionary <string, object> objeto, Dictionary <string, object> objetoRico)
        {
            for (int i = 0; i < listaCampos.Count; i++)
            {
                object valor;
                string propriedade = listaCampos[i];
                bool   ehRico      = false;
                if (propriedade.Contains("|"))
                {
                    ehRico = true;
                }

                try
                {
                    PropertyInfo prop = refletor.Propriedade(propriedade, ehRico);
                    if (!ehRico)
                    {
                        valor = prop.GetValue((T)item, null);
                        if (valor != null)
                        {
                            if (valor.GetType() == typeof(decimal))
                            {
                                objeto.Add(prop.Name.Replace("|", "."), valor.ToString());
                            }
                            else
                            {
                                objeto.Add(prop.Name.Replace("|", "."), valor);
                            }
                        }
                        else
                        {
                            objeto.Add(prop.Name.Replace("|", "."), valor);
                        }
                    }
                    else
                    {
                        valor = refletor.GetPropValueObjRico(propriedade.Replace("|", "."), (T)item);
                        objetoRico.Add(propriedade.Split('|').Last(), valor);

                        string nomeObjeto = propriedade.Split('|')[0];
                        if (objeto.ContainsKey(nomeObjeto))//Já Existe objeto
                        {
                            objeto[nomeObjeto] = objetoRico;
                        }
                        else//Novo objeto Rico
                        {
                            objeto.Add(nomeObjeto, objetoRico);
                        }
                    }
                }
                catch
                {
                    valor = "PROPRIEDADE NÃO EXISTE";
                    objeto.Add(propriedade.Replace("|", "."), valor);
                }
            }
        }
        private static void PopulaObjeto <T>(RefletorDinamico refletor, T item, Dictionary <string, object> objeto)
        {
            foreach (var prop in refletor.Propriedades)
            {
                string namespaceModelo   = typeof(T).FullName.Replace("." + typeof(T).Name, "");
                string namespaceProperty = prop.PropertyType.FullName.Replace("." + prop.PropertyType.Name, "");

                if (!prop.ToString().Contains("EntityReference") && prop.Name != "EntityKey" && namespaceModelo != namespaceProperty &&
                    !prop.PropertyType.Name.Contains("EntityCollection"))
                {
                    object valor = prop.GetValue((T)item, null);
                    objeto.Add(prop.Name, valor);
                }
                else if (!prop.ToString().Contains("EntityReference"))
                {
                    objeto.Add(prop.Name, null);
                }
            }
        }