C# 历遍对象属性

2021-02-04 03:18

阅读:711

标签:如何   sage   成员   root   new   val   builder   数据   pen   

今天有个网友问如何历遍对象的所有公共属性,并且生成XML。采用序列化方式的话比较简单,我写个手工解析的例子,这样能让初学者更加理解也比较灵活,记录一下吧或许会有人用到。

对象模型:

    public class Master
    {
        public string Description { get; set; }
        public List Slaves { get; set; }
    }

    public class Slave
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }

 

解析代码:

  //生成数据
  Master master = new Master();
  master.Description = "ABCD";
  master.Slaves = new List();
  master.Slaves.Add(new Slave { Name = "aaa", ID = 1 });
  master.Slaves.Add(new Slave { Name = "bbb", ID = 2 });
  master.Slaves.Add(new Slave { Name = "cccc", ID = 3 });

  StringBuilder sb = new StringBuilder("\r\n");
//获取对象所有公共属性 foreach (PropertyInfo pi in master.GetType().GetProperties()) { //判断属性是否为集合类型 if (pi.PropertyType.IsGenericType) { sb.AppendLine($""); //获取集合对象 foreach (object items in (pi.GetValue(master, null) as IEnumerableobject>)) { sb.AppendLine($""); //获取集合对象成员 foreach (PropertyInfo item in items.GetType().GetProperties()) { sb.AppendLine($"{item.GetValue(items, null)}{item.Name}>"); } sb.AppendLine($"{items.GetType().Name}>"); } sb.AppendLine(""); } else { sb.AppendLine($"{pi.GetValue(master, null)}{pi.Name}>"); } } sb.AppendLine(""); MessageBox.Show(sb.ToString());

 

生成的XML结构:

Root>
  Description>ABCDDescription>
  Items name="Slaves">
    Slave>
      ID>1ID>
      Name>aaaName>
    Slave>
    Slave>
      ID>2ID>
      Name>bbbName>
    Slave>
    Slave>
      ID>3ID>
      Name>ccccName>
    Slave>
  Items>
Root>

 

C# 历遍对象属性

标签:如何   sage   成员   root   new   val   builder   数据   pen   

原文地址:https://www.cnblogs.com/MuNet/p/11479895.html


评论


亲,登录后才可以留言!