码迷,mamicode.com
首页 > Windows程序 > 详细

C#反射应用

时间:2015-04-28 13:45:08      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

考虑这个是因为返回的是对象集合,需要把对象集合绑定到datagridview上,绑定datagridview需要数据源,组装数据的话,用datatable添加列很麻烦,所以用反射来实现,估计可能会有多个地方使用,可能是不同的对象使用,所以定义为泛型

public class DatatableListHelper<T>
    {
        public static DataTable GetDataTableHelper(List<T> items)
        {
            DataTable dt = new DataTable();
            Type t = items[0].GetType();
            PropertyInfo[] pis = t.GetProperties();
            foreach (PropertyInfo pi in pis)
            {
                dt.Columns.Add(pi.Name);
            }

            foreach (T item in items)
            {
                DataRow dr = dt.NewRow();
                foreach (PropertyInfo pi in pis)
                {
                    object obj = pi.GetValue(item, null);
                    switch (pi.PropertyType.Name.ToString().ToLower())
                    {
                        case "datetime" :
                            dr[pi.Name] = Convert.ToDateTime(obj).ToString("yyyy-MM-dd");
                            break;
                        case "int32":
                            dr[pi.Name] = Convert.ToInt32(obj);
                            break;
                        case "double":
                            dr[pi.Name] = Convert.ToDouble(obj);
                            break;
                        default:
                            dr[pi.Name] = obj;
                            break;
                    }
                }
                dt.Rows.Add(dr);
            }
            return dt;
        }
    }

  switch里类型不是很全,需要添加一些类型

 

反之,如果把datatable转换成对象应该也可以用反射来做

 

C#反射应用

标签:

原文地址:http://www.cnblogs.com/JohnnyBao/p/4462678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!