Beispiel #1
0
        public static List <TObject> Map <TObject>(DataSet ds) where TObject : class, new()
        {
            var list       = new List <TObject>();
            var entityType = typeof(TObject);
            var setters    = ExpressionReflector.GetSetters(entityType);
            var properties = ExpressionReflector.GetProperties(entityType);
            var table1     = ds.Tables[0];

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                var local = Activator.CreateInstance <TObject>();
                foreach (var str in setters.Keys)
                {
                    var obj2 = row[str];
                    if (obj2 != DBNull.Value)
                    {
                        var propertyType   = properties[str].PropertyType;
                        var underlyingType = Nullable.GetUnderlyingType(propertyType);
                        if (underlyingType == null)
                        {
                            underlyingType = propertyType;
                        }
                        if (underlyingType.IsEnum)
                        {
                            obj2 = Enum.Parse(underlyingType, Convert.ToString(obj2));
                        }
                        else
                        {
                            obj2 = Convert.ChangeType(obj2, underlyingType);
                        }
                        setters[str](local, obj2);
                    }
                }
                list.Add(local);
            }
            return(list);
        }
Beispiel #2
0
        public static IList Map(Type objectType, DataSet ds, ObjectPropertyConvertType convertType)
        {
            var list       = (IList)Activator.CreateInstance(ReflectorConsts.ListObjectType);
            var setters    = ExpressionReflector.GetSetters(objectType);
            var properties = ExpressionReflector.GetProperties(objectType);
            var table1     = ds.Tables[0];

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                object obj2 = null;
                if (objectType.IsSealed)
                {
                    var list2 = new List <object>();
                    foreach (DataColumn column in ds.Tables[0].Columns)
                    {
                        var item = row[column];
                        if (item == DBNull.Value)
                        {
                            item = null;
                        }
                        list2.Add(item);
                    }
                    if (TypeHelper.IsValueType(objectType))
                    {
                        obj2 = list2[0];
                    }
                    else
                    {
                        obj2 = ExpressionReflector.CreateInstance(objectType, convertType, list2.ToArray());
                    }
                }
                else
                {
                    obj2 = ExpressionReflector.CreateInstance(objectType, convertType);
                    foreach (DataColumn column2 in ds.Tables[0].Columns)
                    {
                        var obj4 = row[column2];
                        if (obj4 != DBNull.Value)
                        {
                            var info = properties[column2.ColumnName];
                            if (info != null)
                            {
                                var propertyType   = info.PropertyType;
                                var underlyingType = Nullable.GetUnderlyingType(propertyType);
                                if (underlyingType == null)
                                {
                                    underlyingType = propertyType;
                                }
                                if (underlyingType.IsEnum)
                                {
                                    obj4 = Enum.Parse(underlyingType, Convert.ToString(obj4));
                                }
                                else
                                {
                                    obj4 = Convert.ChangeType(obj4, underlyingType);
                                }
                                setters[column2.ColumnName](obj2, obj4);
                            }
                        }
                    }
                }
                list.Add(obj2);
            }
            return(list);
        }