根据反射获取属性信息并创建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 ...
随机推荐
- Android studio教程:[5]活动的生命周期
想要学好安卓开发,就必须理解安卓软件的生命周期,明白一个活动的创建.启动.停止.暂停.重启和销毁的过程,知道各个阶段会调用什么函数进行处理不同的情况,这里我就通过一个简单的例子让大家明白一个活动的生命 ...
- 查看Android数据库文件
使用Eclipse DDMS的File Explorer不能能看到Data目录下面的东西,可能由下面原因引起的 手机没有Root -- 可以使用Root大师 Data文件权限不够 -- 可以使用Ro ...
- iOS框架介绍
iOS框架介绍 Cocoa Touch GameKit 实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息 iOS设备之间蓝牙数据传输 从iOS7开始过期 局域网游 ...
- 世界国家名与英文名【json】
英文版 var geolocation= [ ["AO", "Angola"], ["AF", "Afghanistan& ...
- 2015.4.8-C#入门基础(二)
初来乍道,下面分享一下,自己做的小程序 主要用到 数组,类型转换,枚举,循环: 主要体现的是: 输入姓名,就可以查看其性格 using System;using System.Collections. ...
- Mysql JOIN优化。
join性能自行百度,google 数据60w+,这里我只测试了一个limit , ) ,) AS C LEFT JOIN table2 AS B ON C.e_id=B.id; ) ,;
- java.util.logging.Logger基础教程
从JDK1.4开始即引入与日志相关的类java.util.logging.Logger,但由于Log4J的存在,一直未能广泛使用.综合网上各类说法,大致认为: (1)Logger:适用于小型系统,当日 ...
- 关于jQuery中的attr和data问题
今天在使用data获取属性并且赋值时遇到一个小问题,写下来防止以后再跳坑. 在使用jQuery获取自定义属性值时,我们习惯用 $(selector).attr('data-value'); jQuer ...
- Fragment与Activity
一个Fragment的实例总是和包含它的Activity直接相关. fragment可以通过getActivity() 方法来获得Activity的实例,然后就可以调用一些例如findViewById ...
- xss框架(二)基础框架实现
简述 自上一篇博客介绍浏览器通信以来已经过去将近两个月了,兜兜转转挖了不少坑,也走了很多弯路.期间研究saml2.0和单点登录等技术都最后无疾而终. 只有xss框架这部分坚持了下来,这个框架还有很多事 ...