查看了一些方法之后,做了一些总结,此方法适用于传进的参数是List<T>类型,

但事先并不知道T的类型,T可以是自定义类型。

 public DataTable CreateDataTable(Object o)
{
DataTable dt = new DataTable();
//DataColumn yearColumn = new DataColumn("Year", System.Type.GetType("System.String"));
//DataColumn monthColumn = new DataColumn("Month", System.Type.GetType("System.String"));
//dt.Columns.AddRange(new DataColumn[] { yearColumn, monthColumn});
//foreach (DateModel date in dlist)
//{
// DataRow newRow = dt.NewRow();
// newRow["Year"] = date.year;
// newRow["Month"] = date.month;
// dt.Rows.Add(newRow);
//}
//Type testType = typeof(DateModel); Type testType = o.GetType();
Type t = o.GetType().GetGenericArguments()[];
//object genericList = CreateGeneric(typeof(List<>), o.GetType().GetGenericArguments()[0]);
//genericList.GetType().InvokeMember("Add", BindingFlags.Default | BindingFlags.InvokeMethod, null, genericList, new Object[] { o});
////Type testType = typeof(CreateDataTableUtil);
//Assembly assembly = testType.Assembly;
//string name = assembly.FullName;//name = "WindowsFormsApplication6, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" //Type[] typeList = assembly.GetTypes(); // 获取类型
// // 针对每个类型获取详细信息 PropertyInfo[] propertys = t.GetProperties(); foreach (PropertyInfo pro in propertys)
{
DataColumn dc = new DataColumn();
dc = dt.Columns.Add(pro.Name, System.Type.GetType(pro.PropertyType.FullName));
}
IEnumerable list = o as IEnumerable;
foreach (Object obj in list)
{
DataRow newRow = dt.NewRow();
for (int i = ; i < propertys.Count(); i++)
{
newRow[dt.Columns[i]] = obj.GetType().GetProperty(dt.Columns[i].ToString()).GetValue(obj);
} dt.Rows.Add(newRow);
}
return dt;
//}
//public static object CreateGeneric(Type generic, Type innerType, params object[] args)
//{
// Type specificType = generic.MakeGenericType(new System.Type[] { innerType });
// return Activator.CreateInstance(specificType, args);
}
}

根据反射获取属性信息并创建DataTable的更多相关文章

  1. C#反射 获取程序集信息和通过类名创建类实例(转载)

    C#反射获取程序集信息和通过类名创建类实例 . System.Reflection 命名空间:包含通过检查托管代码中程序集.模块.成员.参数和其他实体的元数据来检索其相关信息的类型. Assembly ...

  2. 利用Java反射根据类的名称获取属性信息和父类的属性信息

    代码: import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java ...

  3. c#反射机制学习和利用反射获取类型信息

    反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...

  4. 定义通用的可通过lambda表达式树来获取属性信息

    我们一般获取某个类型或对象的属性信息均采用以下几种方法: 一.通过类型来获取属性信息 var p= typeof(People).GetProperty("Age");//获取指定 ...

  5. C# 反射获取属性值、名称、类型以及集合的属性值、类型名称

    实体类 class Product { public string Id { get; set; } public string Name { get; set; } public List<P ...

  6. 反射获取属性DisplayName特性名字以及属性值

    /// <summary> /// 反射获取所有DisplayName标记值 /// </summary> /// <typeparam name="T&quo ...

  7. Java反射学习-3 - 反射获取属性,方法,构造器

    package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ...

  8. C# 反射获取属性类型及属性值,两个实体转换

    一.两个实体数据转换 /// <summary> /// 为属性赋值 /// </summary> /// <typeparam name="T"&g ...

  9. 6、Linux基础--文件类型、属性信息、创建用户与用户组

    笔记 1.晨考 1.解析映射文件 /etc/hosts 2.磁盘挂载文件 /etc/fstab 3.设置开机自启动脚本的步骤 1.修改/etc/rc.local 2.设置可执行权限 chmod +x ...

随机推荐

  1. 8.6中关于PSNR(峰值信噪比), img->quad的解释

    在JM代码中,多次遇到img->quad这个东西,而在官方代码中只给出了一句说明: 我开始看了好几遍都没有看懂,然后看到后面有snr,所以想应该和snr有关吧. 然后再代码中寻找snr,发现jm ...

  2. Angular之作用域与事件(转)

    学习Angular,首先要理解其作用域机制. Angular应用是分层的,主要有三个层面:视图,模型,视图模型.其中,视图很好理解,就是直接可见的界面,模型就是数据,那么视图模型是什么呢?是一种把数据 ...

  3. <httpRuntime>

    1.在webconfig中httpconfig属性只能出现一次 配置httpRunTime也可以让FileUpload上传更大的文件,不过设置太大了会因用户将大量文件传递到该服务器而导致的拒绝服务攻击 ...

  4. javascript 算法

    前段时间学习算法方面的知识看了一下用C语言写的一些简单的算法自己用js模拟实现一遍现在整理出来和大家分享一下. 河内塔 斐波那契数列 巴斯卡三角形 三色棋 河内之塔(Towers of Hanoi)是 ...

  5. ajax 分页完全代码整理

    /* ajax分页 */ var page_cur = 1; //当前页 var total_num, page_size, page_total_num;//总记录数,每页条数,总页数 functi ...

  6. HDU 1055 - Color a Tree

    一棵树,结点树为n,根结点为r.每个结点都有一个权值ci,开始时间为0,每染色一个结点需要耗时1,每个结点的染色代价为ci*ti(ti为当前的时间),每个结点只有在父结点已经被染色的条件下才能被染色. ...

  7. 从汇编看c++对静态成员的存取

    c++中静态成员变量不存在于对象之中,而存在于全局数据段,只是其可见性受到限制,仅能被所属类访问,而非静态成员变量存在于对象中,因而,在访问两种不同数据成员时,会有些许差别.对于静态数据成员的访问,是 ...

  8. 已知要闪回的大致时间使用基于as of scn的闪回查询

    基本判断出要恢复误操作的dml的时间可以使用如下的方法进行数据的恢复: example: 一.创建test表 -------create table flashback_asof------ crea ...

  9. 【搜索引擎Jediael开发4】V0.01完整代码

    截止目前,已完成如下功能: 1.指定某个地址,使用HttpClient下载该网页至本地文件 2.使用HtmlParser解释第1步下载的网页,抽取其中包含的链接信息 3.下载第2步的所有链接指向的网页 ...

  10. Intent七在属性之一:ComponentName

    注:在<疯狂android讲义>中,此属性称为Component,官方文档中称为ComponentName. 1.The name of the component that should ...