一.获取对象中的所有属性

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 反射初体验的更多相关文章

  1. PHP初体验

    PHP初体验 提笔写初体验总不知道从何说起,直接聊PHP中的函数.PHP网络技术.数据库操作.PHP模板等感觉又不是初体验.最后还是决定从PHP的面向对象.PHP的魔术方法.PHP的反射.PHP中的异 ...

  2. SpringBoot初体验及原理解析

    一.前言 ​ 上篇文章,我们聊到了SpringBoot得以实现的幕后推手,这次我们来用SpringBoot开始HelloWorld之旅.SpringBoot是Spring框架对“约定大于配置(Conv ...

  3. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  4. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  5. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  6. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  7. 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...

  8. 【Knockout.js 学习体验之旅】(1)ko初体验

    前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...

  9. 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验

    在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...

随机推荐

  1. codeforces 691E(矩阵乘法)

    E. Xor-sequences time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...

  2. Linux下重启加载命令

    nginx -s reload

  3. ip addr

    ip 32 位.四个字节.IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同.A.B.C三类IP地址的特征:当 ...

  4. Google Kaptcha验证码的使用

    原文:http://www.kailing.pub/article/index/arcid/92.html Kaptcha是什么? kaptcha 是谷歌开源的非常实用的验证码生成工具,基于Simpl ...

  5. Centos6.4安装Zimbra初步教程

    环境: 1.centos6.4*64位版本 2.主机最好内存设置在2G以上,要不安装的时候卡死你 3.下载最新的开源的Zimbra安装包,下载zcs-8.0.4_GA_5737.RHEL6_64.20 ...

  6. Mac下intellij idea环境的项目的新建、配色、快捷键的配置

    注:本文所使用的intellij idea是14.1.2的版本号. 一.项目的新建(以新建Java项目为例) 选中当中的"create new project". 接下来你会看到下 ...

  7. 关于mysql建立索引 复合索引 索引类型

    这两天有个非常强烈的感觉就是自己在一些特别的情况下还是hold不住,脑子easy放空或者说一下子不知道怎么去分析问题了,比方,问"hash和btree索引的差别",这非常难吗.仅仅 ...

  8. MVC 登录后重定向来最初请求的 URL

    1.在登录的“Action” 方法中接收“ReturnUrl”参数. 2.在验证登录的“Action”方法中登录成功后,判断如果“ReturnUrl”不为空就跳转到“ReturnUrl”指向的页面. ...

  9. [办公自动化]计算机突然死机后asd自动恢复文档未能恢复,如何打开使用

    今天计算机突然死机,但是word未能提示自动恢复窗格.所以无法自动恢复word文档.但是在文档所在的文件夹看到了一个“自动恢复”开头的asd恢复文档. 该如何使用这个文档呢? 按照以前的惯例,尝试了如 ...

  10. 【bzoj2728】[HNOI2012]与非

    先打出nand表 0 nand 0=1 1 nand 1=0 0 nand 1=1 1 nand 0=1   容易发现(!a)=a nand a 然后(a&b)=!(a nand b) 然后( ...