.net 反射初体验
一.获取对象中的所有属性
Type是.net定义的一个反射的类。通过反射获取到对象的所有属性,然后根据属性获取对象对应属性所对应的值。
使用PropertyInfo,请引用命名空间using System.Reflection;
1、首先定义一个对象People
/// <summary>
/// 定义一个People类
/// </summary>
public class People
{
/// <summary>
/// 省份证号
/// </summary>
public string CartId { get; set; }
/// <summary>
/// 名字
/// </summary>
public string Name { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime BirthDay { get; set; }
/// <summary>
/// 性别
/// </summary>
public string Sex { set; get; }
}
2、对象初始化
//利用对象初始化器初始化对象
People people = new People
{
CartId = "5342323123124124124",
Name = "zhangsan",
BirthDay = new DateTime(1990, 9, 11),
Sex = "男"
};
3、获取属性值
//获取Name属性的值
Console.WriteLine(type.GetProperty("Name").GetValue(people, null));
4、调用对应属性的值
static void Main(string[] args)
{
//利用对象初始化器初始化对象
People people = new People
{
CartId = "",
Name = "zhangsan",
BirthDay = new DateTime(, , ),
Sex = "男"
};
//获取People的数据类型
Type type = people.GetType();
//获取对象的所有属性
PropertyInfo[] properties = type.GetProperties();
//获取Name属性的值
Console.WriteLine(type.GetProperty("Name").GetValue(people, null));
//获取所有属性的名称和对应的值
foreach (var pro in properties)
{
//属性的名称
Console.WriteLine(pro.Name);
//属性对应的值
Console.WriteLine(pro.GetValue(people, null));
}
Console.ReadKey();
}
实例:
对于Linq的数据导出成Excel
首先对于var q =from m in dbContext.Pepples
where m.Sex=="男"
select new{
姓名=m.Name,
省份证号=m.CartId,
出生日期=m.BirthDay,
性别=m.Sex
};
我们得到的q是一个IEnumerable<T>类型的数据.对于这种数据我们一般都是可以使用.ToList()将其转化为范型集合来处理。
我们怎么样将数据导出的呢?
首先定义一个函数
/// <summary>
/// 导出数据源
/// </summary>
/// <param name="list">数据源</param>
public static void OutPutList<T>(List<T> list)
{
XlsDocument xls = new XlsDocument();
Worksheet sheet = xls.Workbook.Worksheets.Add("数据表");
//获取数据的类型
Type type = list[].GetType();
PropertyInfo[] properties = type.GetProperties();
//获取模型的所有属性(名称)
for (int i = ; i < properties.Length; i++)
{
sheet.Cells.Add(, i + , properties[i].Name);
} //将数据写入到Excel
for (int j = ; j < list.Count; j++)
{
type = list[j].GetType();
properties = type.GetProperties();
for (int i = ; i < properties.Length; i++)
{
//获取对应属性的对应值
sheet.Cells.Add(j + , i + , properties[i].GetValue(list[j], null));
}
} //写入数据库
xls.FileName = "FF_" + DateTime.Now.ToString("yyyyMMddHHmmss");
xls.Send();
}
这种方法的缺点就是不能按照想要的顺序导出成EXCEL.
.net 反射初体验的更多相关文章
- PHP初体验
PHP初体验 提笔写初体验总不知道从何说起,直接聊PHP中的函数.PHP网络技术.数据库操作.PHP模板等感觉又不是初体验.最后还是决定从PHP的面向对象.PHP的魔术方法.PHP的反射.PHP中的异 ...
- SpringBoot初体验及原理解析
一.前言 上篇文章,我们聊到了SpringBoot得以实现的幕后推手,这次我们来用SpringBoot开始HelloWorld之旅.SpringBoot是Spring框架对“约定大于配置(Conv ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...
- 【Knockout.js 学习体验之旅】(1)ko初体验
前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...
- 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验
在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...
随机推荐
- c内存分配(转)
图示 C内存分配 程序代码区 存放函数体的二进制代码 全局数据区 全局变量和静态变量的存储是放在一起的.初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域. ...
- 详细图解mongodb 3.4.1 win7x64安装
原文:http://www.cnblogs.com/yucongblog/p/6895983.html 详细图解,记录 win7 64 安装mongo数据库的过程.安装的版本是 MongoDB-win ...
- CSS3的animation功能
旋转动画 <img src="https://facebook.github.io/react/img/logo.svg" class="App-logo" ...
- 功能超级强大的网络工具nc
摘自:http://www.linuxso.com/command/nc.html 功能说明:功能强大的网络工具语 法:nc [-hlnruz][-g<网关...>][-G<指向器数 ...
- git锁和钩子以及图形化界面
1.锁机制 Locking Options 严格锁(strict locking):一个时刻,只有一个人可以占用资源. 乐观锁(optimistic locking):允许多个人同时修改同一文件.乐观 ...
- 积累——SQLCommand命令
SQLcommand表示要对SQL数据库运行的一个 T-SQL 语句或存储过程.以便运行大量操作或处理数据库结构. 在对数据库訪问的时候,就经经常使用到这个.看看它是怎么做到的吧! 一.属性 Comm ...
- Boss OpenCart 商城自适应主题模板 ABC-0012-01
Boss OpenCart 商城自适应主题模板 ABC-0012-01 模板特性兼容浏览器IE7, IE8, IE9, IE10, Firefox, Safari, Chrome OpenCart版本 ...
- 华为OJ2011-最长公共子串
一.题目描述 描述: 计算两个字符串的最大公共子串(Longest Common Substring)的长度,字符区分大小写. 输入: 输入两个字符串 输出: 输出一个整数 样例输入: asdfas ...
- CGlib小记
CGlib是一个强大的代码生成包.常被用于各种AOP框架,提供"拦截"功能. JDK本身就为控制要訪问的对象提供了一 种途径,动态代理Proxy. 可是被代理的累必须实现一个或多个 ...
- NSoup解析处理Html
以前在做网页静态生成的时候,使用正则表达式分析提取网页链接.最近搜索了解到java有个Jsoup解析网页,对应.net有个nsoup.处理网页非常好用. Document doc = NSoupCli ...