zoukankan      html  css  js  c++  java
  • C# 历遍对象属性

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

    对象模型:

        public class Master
        {
            public string Description { get; set; }
            public List<Slave> 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<Slave>();
      master.Slaves.Add(new Slave { Name = "aaa", ID = 1 });
      master.Slaves.Add(new Slave { Name = "bbb", ID = 2 });
      master.Slaves.Add(new Slave { Name = "ccc", ID = 3 });
    
      StringBuilder sb = new StringBuilder("<Root>
    ");
    //生成XML foreach (PropertyInfo pi in master.GetType().GetProperties()) { if (pi.PropertyType.IsGenericType) { sb.AppendLine($"<{pi.Name}>"); foreach (object items in (pi.GetValue(master, null) as IEnumerable<object>)) { sb.AppendLine($"<{items.GetType().Name}>"); foreach (PropertyInfo item in items.GetType().GetProperties()) { sb.AppendLine($"<{item.Name}>{item.GetValue(items, null)}</{item.Name}>"); } sb.AppendLine($"</{items.GetType().Name}>"); } sb.AppendLine("</{pi.Name}>"); } else { sb.AppendLine($"<{pi.Name}>{pi.GetValue(master, null)}</{pi.Name}>"); } } sb.AppendLine("</Root>"); MessageBox.Show(sb.ToString());

    生成的XML结构:

    <Root>
      <Description>ABCD</Description>
      <Slaves>
        <Slave>
          <ID>1</ID>
          <Name>aaa</Name>
        </Slave>
        <Slave>
          <ID>2</ID>
          <Name>bbb</Name>
        </Slave>
        <Slave>
          <ID>3</ID>
          <Name>ccc</Name>
        </Slave>
      </Slaves>
    </Root>
  • 相关阅读:
    [Javascript]史上最短的IE浏览器判断代码
    初学者必看:精心整理的Javascript操作JSON总结
    用实例一步步教你写Jquery插件
    学习一种新编程语言要做的14个练习
    一些实战中总结的 javascript 开发经验
    JavaScript开发规范
    jQuery性能优化
    不到30行JS代码实现的Excel表格
    javascript 执行顺序详解
    Java基础知识强化之IO流笔记58:内存操作流
  • 原文地址:https://www.cnblogs.com/MuNet/p/11479895.html
Copyright © 2011-2022 走看看