ASP.Net 反射显示

//获取泛型T的类型
                    Type type = typeof(T);

                    //循环获取到的数据的行
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        //实例化获取到的类
                        object obj = Activator.CreateInstance(type);

                        //循环获取到的数据的列
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            //获取列的名称
                            PropertyInfo pinfo = type.GetProperty(dt.Columns[j].ColumnName);

                            #region 判断获取到的列的类型
                            //int类型
                            if (dt.Columns[j].DataType == typeof(Int32))
                            {
                                //判断是否是空值
                                if (dt.Rows[i][j] != null)
                                {
                                    pinfo.SetValue(obj, int.Parse(dt.Rows[i][j].ToString(), null));
                                }
                                else
                                {
                                    pinfo.SetValue(obj, 0, null);
                                }
                            }

                            //float类型
                            if (dt.Columns[j].DataType == typeof(float))
                            {
                                //判断是否是空值
                                if (dt.Rows[i][j] != null)
                                {
                                    pinfo.SetValue(obj, float.Parse(dt.Rows[i][j].ToString(), null));
                                }
                                else
                                {
                                    pinfo.SetValue(obj, 0.0f, null);
                                }
                            }

                            //datetime类型
                            if (dt.Columns[j].DataType == typeof(DateTime))
                            {
                                //判断是否是空值
                                if (dt.Rows[i][j] != null)
                                {
                                    pinfo.SetValue(obj, DateTime.Parse(dt.Rows[i][j].ToString(), null));
                                }
                                else
                                {
                                    pinfo.SetValue(obj, "", null);
                                }
                            }

                            //double类型
                            if (dt.Columns[j].DataType == typeof(double))
                            {
                                //判断是否是空值
                                if (dt.Rows[i][j] != null)
                                {
                                    pinfo.SetValue(obj, double.Parse(dt.Rows[i][j].ToString(), null));
                                }
                                else
                                {
                                    pinfo.SetValue(obj, 0.00, null);
                                }
                            }

                            //string类型
                            if (dt.Columns[j].DataType == typeof(string))
                            {
                                //判断是否是空值
                                if (dt.Rows[i][j] != null)
                                {
                                    pinfo.SetValue(obj, dt.Rows[i][j].ToString(), null);
                                }
                                else
                                {
                                    pinfo.SetValue(obj, "", null);
                                }
                            }
                            #endregion
                        }

                        list.Add((T)obj);
                    }
                }
            }
            return list;

posted @ 2020-06-17 08:05  我是一只快乐的码农  阅读(104)  评论(0编辑  收藏  举报