foreach遍历<T>泛类型下的所有属性名和属性值

因为工作需要,把数据保存到XML文件

工司网站大部分展示数据是读取XML,看了以前的代码,每次保数据都要为实体创建好XML结构(当然实际上可能不需要全部取出属性)

抽个中午休息时间就分享给大家

特别欢迎吐槽,本人第一篇有点用的博客啊

主要是用到了GetType()和GetType().GetProperties();

GetType();返回当前对象的类型

GetProperties();是返回对象下的属性(变量)

那么GetType().GetProperties();就是对象的属性罗

补充一下:(其他的还有 方法:GetMethods(); 成员:GetMembers())

上班时间到了,闪。欢迎给出其他方法,谢谢

//Person实体类
namespace Test
{
   public class Person
    {
       public string Name { get; set; }//姓名
       public string Sex { get; set; }//性别
       public int Age { get; set; }//年龄
       public string Address { get; set; }//地址
    }
}

  

//创建集合
        private static List<Person> CreatePersonList()
        {
            var list =new List<Person>();//创建person集合
            var lisi = new Person//创建李四
            {
                Name = "李四",
                Address = "天朝",
                Age = 18,
                Sex = ""
            };
            
            var zhangsan=new Person()//创建张三
            {
                Name = "张三",
                Address = "帝都",
                Age = 28,
                Sex = ""
            };
            list.Add(lisi);//添加到集合
            list.Add(zhangsan);//添加到集合
            return list;
        }
//////重点在这里
//打印数据 private static void ForeachExp<T>(List<T> data) { foreach (var item in data)//遍历data集合 { foreach (var person in item.GetType().GetProperties())//遍历item(person)实体下的属性 { var stringBuilder = new StringBuilder(); stringBuilder.Append(person.Name);//属性名 stringBuilder.Append(""); //person.GetValue(item) item必须 stringBuilder.Append(person.GetValue(item));//属性值 Console.WriteLine(stringBuilder); //之所以不用 person.Name+" : "+person.GetValue(item) 这种++++的模式,主要是为了易读性 //Console.WriteLine(person.Name + " : " + person.GetValue(item)); } } }

调用方法

 

 static void Main(string[] args)
        {
            var data = CreatePersonList();
            ForeachExp(data);
            Console.ReadKey();
        }

 

 

 

打印结果

posted on 2015-10-19 13:38  菜鸟一路逛奔  阅读(1664)  评论(0)    收藏  举报

导航