`

使用反射机制遍历对象中的属性名及属性值

    博客分类:
  • C#
阅读更多

首先描述一种情景,当给你一个VO类(这个类是映射到数据库的表上的),现在让你把这个VO对象(已包含有效数据)另存为成XML文件,一般的做法可能是:

 

rows[i].SetAttribute("Adddate", ret[i].Adddate);

 

 如果属性只有五六七八个还可以忍受手写的方式,如果多至十几乃至几十的情况下,手写已经超出了人的忍耐程度。下面给出一种解决方法,利用C#的反射机制自动生成这些XML节点(属性等)。

给出一个示例的VO类:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DataCenter.VO
{
    public class HousehireVO
    {
        private int _id;
        private string _area;
        private string _source;
        private string _sphone;
        private string _address;
        private int _lc;
        private string _hx;
        private string _zhuangxiu;
        private double _hireprice;
        private int _bnuan;
        private string _ptss;
        private string _sysm;
        private string _bphone;
        private string _linkman;
        private string _wtsm;
        private DateTime _adddate;
        private int _userid;
        private int _deptid;
        private string _deptName;
        private int _invaliddate;
        private string _gjxl;
        private int _status;
        private int _isAgreement;
        private double _mj;

        #region Constructors
        public HousehireVO()
        {
        }
        #endregion

        #region Properties
        //一些Setter/Getter
        #endregion
    }
}

 

上述这个类描述了一条房屋租赁信息。

 

不多废话,给出遍历属性的实现代码,如下:

 

 List<VO.HousehireVO> ret ;
           
            //创建xml文档对象
            XmlDocument doc = new XmlDocument();
            //xml头
            doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", null)); //声明
            //根元素
            doc.AppendChild(doc.CreateElement("root")); //根节点

            XmlElement[] rows = new XmlElement[ret.Count];

            for (int i = 0; i < ret.Count; i++)
            {
                rows[i] = doc.CreateElement("Info");
                HousehireVO vo = ret[i];
                Type vType = vo.GetType();
                PropertyInfo[] vPropertyInfos = vType.GetProperties();
                foreach (PropertyInfo vPropertyInfo in vPropertyInfos)
                {
                    rows[i].SetAttribute(vPropertyInfo.Name, vPropertyInfo.GetValue(ret[0], null); 
                }
            }

 

 

分享到:
评论

相关推荐

    C#中使用反射遍历一个对象属性及值的小技巧

    在本文中,我们将探讨如何使用反射遍历一个对象的所有属性及其对应的值。 首先,我们需要获取对象的`Type`对象。`Type`对象代表了一个类的元数据,它包含了关于类的所有信息,包括其属性、方法、构造函数等。以下是...

    Java Bean 遍历和使用注解给Bean的属性添加属性值

    在给定的标题"Java Bean 遍历和使用注解给Bean的属性添加属性值"中,我们可以深入探讨两个主要主题:Java Bean的遍历和注解的应用。 1. **Java Bean遍历**: - **反射机制**:遍历Java Bean通常涉及使用Java的反射...

    java反射遍历实体类属性和类型,并赋值和获取值的简单方法

    这个例子主要展示了如何使用Java反射机制进行属性操作,但需要注意的是,反射应该谨慎使用,因为它可能会破坏封装性,增加代码的复杂性和运行时的性能开销。在实际开发中,除非必要,否则尽量避免过度依赖反射。此外...

    c#遍历obj属性用例

    在遍历对象属性之前,首先需要获取对象的类型信息。这通常通过调用`GetType()`方法来完成。如示例代码所示: ```csharp Type t = tc.GetType(); ``` 这里的`tc`是任意一个对象实例,`GetType()`返回该对象的运行时...

    应用java反射机制打印一个对象.docx

    在 Java 中,我们可以使用反射机制来打印一个对象的所有属性值。下面是一个简单的示例代码: ```java import java.lang.reflect.Field; public class ObjectPrinter { public static void printObject(Object obj...

    Java利用反射获取object的属性和值代码示例

    4.如何使用反射机制设置对象的属性值 5.反射机制的优缺点和使用场景 6.如何处理反射机制中的异常 这篇文章展示了Java反射机制的基本概念和使用方法,并提供了一个实用的例子来展示如何使用反射机制来获取对象的属性...

    JS遍历页面所有对象属性及实现方法

    在JavaScript中,除了遍历对象属性,还可以通过反射机制来动态地获取和操作对象的信息。反射是指程序在运行时检查自身的结构和行为。在JavaScript中,`for...in`循环可以用于实现反射机制,允许我们在运行时检查对象...

    Qt 使用QMetaObject实现反射机制代码demo

    下面我们将通过分析给定的文件名来理解如何在Qt中使用QMetaObject实现反射机制。 首先,我们看到几个`.cpp`和`.h`文件,这些是C++的源代码和头文件。例如,`Person.cpp`和`Person.h`可能定义了一个名为`Person`的类...

    运用反射得到类中的属性和值

    通过上述示例,我们可以看到如何利用Java反射机制获取一个类中的所有属性及其对应的值。这种方法非常适用于动态配置或解析对象的场景。需要注意的是,虽然反射提供了强大的功能,但它也存在一定的性能开销,因此在...

    C#遍历结构体

    通过上述代码片段的学习,我们不仅掌握了如何在C#中使用反射来遍历结构体的属性,还深入了解了反射的工作原理及其应用场景。反射作为C#的一个高级特性,在实现灵活和可扩展的软件系统方面发挥着重要作用。希望本文能...

    java反射机制学习笔记+反射机制实操案例

    在Java编程语言中,反射机制是一种强大的工具,它允许程序在运行时检查和操作对象的内部属性和行为。反射机制的核心在于`Class`类,它提供了对类信息的访问,包括类的结构、属性、方法以及构造器等。通过反射,...

    JS遍历对象属性的方法示例

    在JavaScript中,遍历对象属性是一项基础且常用的操作,它涉及到对对象的深入理解和动态操作。本篇文章将详细讲解如何遍历JavaScript对象的属性,并通过示例代码展示具体的应用。 首先,JavaScript提供了多种遍历...

    java反射机制工具类

    1. `setPropertyValue`: 这个方法接受对象、属性名和属性值,然后使用反射找到对应的setter方法并调用,从而设置对象的属性值。 2. `getPropertyValue`: 类似地,这个方法会找到getter方法,返回指定属性的值。 3. `...

    java 反射取得类的私有属性,通过私有属性取得属性值

    这篇博客文章可能讨论了如何利用反射机制来获取类的私有属性并读取其对应的属性值。以下是关于这个主题的详细解释。 首先,我们需要理解什么是反射。Java反射API提供了一系列类和接口,如`Class`、`Field`、`Method...

    通过反射获得实体类的字段和值

    - **性能考量**:在性能敏感的代码段应避免使用反射,或将其封装在缓存机制中,减少重复的类型信息查询。 - **安全限制**:如果在沙箱环境或受限环境中运行代码,可能无法访问某些反射功能。 通过以上讲解,我们...

    用反射的方式获取父类中的所有属性和方法

    在Java编程语言中,反射(Reflection)是一种强大的...不过,了解并熟练掌握反射机制对于解决特定问题或实现特定功能(如框架设计)是非常有价值的。通过上述步骤,你可以有效地利用反射获取和操作类的父类属性和方法。

    通过构造及反射实现类属性赋值

    标题中的“通过构造及反射实现类属性赋值”涉及到的技术是Java的构造函数和反射机制。这两种方法在特定场景下能帮助我们更灵活、更深入地处理对象属性的复制。 首先,构造函数是创建新对象时调用的特殊方法,它可以...

    java反射,获取所有属性、方法以及List集合类

    Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于...理解并熟练掌握反射机制,能够帮助开发者解决复杂问题,提升程序的灵活性。

    DBFrm(使用.net的反射机制,实体对象的映射 序列化备份还原数据)

    在.NET框架中,数据库操作是常见的任务之一,而DBFrm项目则提供了一种利用反射机制和对象序列化来实现数据库内容的备份和还原的方法。本文将深入探讨这两个关键概念,以及它们如何协同工作以实现数据管理的目标。 ...

Global site tag (gtag.js) - Google Analytics