根据反射获取属性信息并创建DataTable
查看了一些方法之后,做了一些总结,此方法适用于传进的参数是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的更多相关文章
- C#反射 获取程序集信息和通过类名创建类实例(转载)
C#反射获取程序集信息和通过类名创建类实例 . System.Reflection 命名空间:包含通过检查托管代码中程序集.模块.成员.参数和其他实体的元数据来检索其相关信息的类型. Assembly ...
- 利用Java反射根据类的名称获取属性信息和父类的属性信息
代码: import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java ...
- c#反射机制学习和利用反射获取类型信息
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...
- 定义通用的可通过lambda表达式树来获取属性信息
我们一般获取某个类型或对象的属性信息均采用以下几种方法: 一.通过类型来获取属性信息 var p= typeof(People).GetProperty("Age");//获取指定 ...
- C# 反射获取属性值、名称、类型以及集合的属性值、类型名称
实体类 class Product { public string Id { get; set; } public string Name { get; set; } public List<P ...
- 反射获取属性DisplayName特性名字以及属性值
/// <summary> /// 反射获取所有DisplayName标记值 /// </summary> /// <typeparam name="T&quo ...
- Java反射学习-3 - 反射获取属性,方法,构造器
package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ...
- C# 反射获取属性类型及属性值,两个实体转换
一.两个实体数据转换 /// <summary> /// 为属性赋值 /// </summary> /// <typeparam name="T"&g ...
- 6、Linux基础--文件类型、属性信息、创建用户与用户组
笔记 1.晨考 1.解析映射文件 /etc/hosts 2.磁盘挂载文件 /etc/fstab 3.设置开机自启动脚本的步骤 1.修改/etc/rc.local 2.设置可执行权限 chmod +x ...
随机推荐
- NET基础课--配置文件1
在.NET Framework中,配置几乎是无处不在的.配置是控制应用程序行为的一些设置.下面我们就来看看到底有几个配置文件,而他们又分别代表了什么? 1. machine.config 这个文件只有 ...
- pl_sql 报ora-12154 无法解析指定的连接标识符的问题
情况一:连接本地的没有问题,连接远程服务器的时候报以上错误.那么在本地客户端下的TNSNames.ora设置中配置你的远程服务器连接,本人的如下: //mestest是远程服务器名 //172.18. ...
- Javascript进阶篇——( 事件响应)笔记整理
什么是事件 JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 鼠标单击事件(on ...
- BAK文件怎么恢复到数据库中
1.右击SQLServer2000实例下的“数据库”文件夹.就是master等数据库上一级的那个图标.选择“所有任务”,“还原数据库” 2.在“还原为数据库”中填上你希望恢复的数据库名字.这个名字应该 ...
- JS中表格的全选和删除要注意的问题
在项目开发中,由于刚刚开始做项目,我对js还不是很精通,所以在用js对表格的全选和删除中遇到了不少问题,后来通过查找资料解决了,之后总结了一下关于js表格的全选和删除出现的一些问题,希望能帮助到大家. ...
- exist和not exist用法
参考:http://wenku.baidu.com/view/577f4d49cf84b9d528ea7a6f.html //这个讲的很详细 引用自:http://chenling1018.bl ...
- [Linked List]Convert Sorted List to Binary Search Tree
Total Accepted: 57775 Total Submissions: 198972 Difficulty: Medium Given a singly linked list where ...
- GPS数据处理 - 字符串函数的灵活应用
题目内容: NMEA- 0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA- The National Mari ...
- Java Calendar获取年、月、日、时间
Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00" ...
- JMS & ActiveMQ小结
JMS简介 JMS源于企业应用对于消息中间件的需求,使应用程序可以借助消息进行异步处理而互不影响.Sun公司和它的合作伙伴设计的JMS API定义了一组公共的应用程序接口和相应语法,使得Java程序能 ...