Exemplo n.º 1
0
        private static object BindToObject(DataRow dr, object entidade)
        {
            //Pega as propriedades da entidade
            PropertyInfo[] classe = entidade.GetType().GetProperties();

            foreach (PropertyInfo propriedade in classe)
            {
                var associacao = Manipulation.GetAttribute <EntityFromSameQueryAttribute>(propriedade);

                if (associacao != default(EntityFromSameQueryAttribute))
                {
                    propriedade.SetValue(entidade, BindToObject(dr, Activator.CreateInstance(propriedade.PropertyType)), null);
                }
                else
                {
                    string nomeCampo = Manipulation.GetDescription(propriedade);
                    var    atributo  = Manipulation.GetAttribute <ColumnAttribute>(propriedade) ?? null;

                    if (dr.Table.Columns.Contains(nomeCampo.ToUpper()) && !dr[nomeCampo.ToUpper()].Equals(DBNull.Value))
                    {
                        if (propriedade.PropertyType.BaseType == typeof(Enum) && atributo != null)
                        {
                            propriedade.SetValue(entidade, Manipulation.Typing(dr[nomeCampo.ToUpper()], propriedade.PropertyType, atributo.DataType), null);
                        }
                        else
                        {
                            propriedade.SetValue(entidade, Manipulation.Typing(dr[nomeCampo.ToUpper()], propriedade.PropertyType), null);
                        }
                    }
                }
            }

            return(entidade);
        }