.net 反射初体验

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

Typ是.net定义的一个反射的类。通过反射获取到对象的所有属性,然后根据属性获取对象对应属性所对应的值。

使用PropertyInfo,请引用命名空间using System.Reflection;

1、首先定义一个对象People

.net 反射初体验
 1  /// <summary>

 2     /// 定义一个People类

 3     /// </summary>

 4     public class People

 5     {

 6         /// <summary>

 7         /// 省份证号

 8         /// </summary>

 9         public string CartId { get; set; }

10         /// <summary>

11         /// 名字

12         /// </summary>

13         public string Name { get; set; }

14         /// <summary>

15         /// 出生日期

16         /// </summary>

17         public DateTime BirthDay { get; set; }

18         /// <summary>

19         /// 性别

20         /// </summary>

21         public string Sex { set; get; }

22     }
View Code

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、调用对应属性的值

.net 反射初体验
 1  static void Main(string[] args)

 2         {

 3         //利用对象初始化器初始化对象

 4             People people = new People

 5             {

 6                 CartId = "5342323123124124124",

 7                 Name = "zhangsan",

 8                 BirthDay = new DateTime(1990, 9, 11),

 9                 Sex = ""

10             };

11             //获取People的数据类型

12             Type type = people.GetType();

13         //获取对象的所有属性

14             PropertyInfo[] properties = type.GetProperties();

15         //获取Name属性的值

16             Console.WriteLine(type.GetProperty("Name").GetValue(people, null));

17         //获取所有属性的名称和对应的值

18             foreach (var pro in properties)

19             {

20         //属性的名称

21                 Console.WriteLine(pro.Name);

22         //属性对应的值

23                 Console.WriteLine(pro.GetValue(people, null));

24             }

25             Console.ReadKey();

26         }
View Code

 

 实例:

对于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()将其转化为范型集合来处理。

我们怎么样将数据导出的呢?

首先定义一个函数

 1   /// <summary>

 2         /// 导出数据源

 3         /// </summary>

 4         /// <param name="list">数据源</param>

 5         public static void OutPutList<T>(List<T> list)

 6         {

 7             XlsDocument xls = new XlsDocument();

 8             Worksheet sheet = xls.Workbook.Worksheets.Add("数据表");

 9             //获取数据的类型

10             Type type = list[0].GetType();

11             PropertyInfo[] properties = type.GetProperties();

12             //获取模型的所有属性(名称)

13             for (int i = 0; i < properties.Length; i++)

14             {

15                 sheet.Cells.Add(1, i + 1, properties[i].Name);

16             }

17 

18             //将数据写入到Excel

19             for (int j = 0; j < list.Count; j++)

20             {

21                 type = list[j].GetType();

22                 properties = type.GetProperties();

23                 for (int i = 0; i < properties.Length; i++)

24                 {

25                      //获取对应属性的对应值

26                     sheet.Cells.Add(j + 2, i + 1, properties[i].GetValue(list[j], null));

27                 }

28             }

29 

30             //写入数据库

31             xls.FileName = "FF_" + DateTime.Now.ToString("yyyyMMddHHmmss");

32             xls.Send();

33         }


这种方法的缺点就是不能按照想要的顺序导出成EXCEL.

你可能感兴趣的:(.net)