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(); }
打印结果

                    
                
                
            
        
浙公网安备 33010602011771号