C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值

转自goldeneyezhang原文 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值

C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值总结:

对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射):

Type t = tc.GetType();//获得该类的Type

//再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了
foreach (PropertyInfo pi in t.GetProperties)
{
  object value1 = pi.GetValue(tc, null));//用pi.GetValue获得值
  string name = pi.Name;//获得属性的名字,后面就可以根据名字判断来进行些自己想要的操作
  //获得属性的类型,进行判断然后进行以后的操作,例如判断获得的属性是整数
  if(value1.GetType() == typeof(int))
  {
  //进行你想要的操作
  }
}

注意:

必须要设置了get 和set方法的属性,反射才能获得该属性

public int Pid
{
get { return pid; }
set { pid = value; }
}
时间: 2024-10-22 11:49:05

C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值的相关文章

C#.net利用反射,遍历获得一个类的所有属性名,方法名,成员名

public void PrintInstanceInfor(object t)  {        //获取所有方法      System.Reflection.MethodInfo[] methods = t.GetMethods();      //获取所有成员      System.Reflection.MemberInfo[] members = t.GetMembers();           //获取所有属性      System.Reflection.PropertyIn

利用反射api查找一个类的详细信息

说到这个实例,首先介绍下本人,我是一个php程序员,从事drupal开发2年多,可以说从实习开始就接触这个,至今没有换过,drupal给我的感觉是俩字"强大",今天写一个views的字段,然后需要继承views的views_handler_field类,还要自己实现里面的一些方法,走一些自己的配置设置,查看这个类的时候,发现实在是太多信息了,并且做了好些继承,于是我就想要是能实现一个功能,传入一个类名,然后就能返回类的所有信息(包括,属性,方法,继承,接口,并且这些类所放置的文件位置,

java利用反射来调用一个类的私有方法

public class Calculator2{ private int add(int a,int b){ return a+b; } } public class Test { public static void main(String[] args){ Calculator2 calculator2 = new Calculator2(); Class<Calculator2> clazz = Calculator2.class; Object result = null; try{

利用反射机制,获取类的字段、方法、并实现简单调用

这篇文章是为之后要介绍Android的ICO框架做预备的,所以,如果想最近学习Android的ICO框架的同学,可以稍微看一下. 首先,简单介绍一下Java里面的反射. JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 不知道这样的一段解释,你能否看懂.如果更简单的说,反射就是能够根据你给出类名实例化出一个实实在在的对象.所以,对象的实例

Android利用反射机制为实体类属性赋值

在做android项目时,有时会遇到从网络上获取json类型数据,赋值给实体类,实体类属性少可以一个一个的赋值,如果实体类有很多属性,赋值可能就要耗很长的功夫了,幸好Java给我们提供了反射机制.下面是在我在android中如何利用java反射机制给实体类赋值. 在Android中利用反射机制为实体类属性赋值,首先需要导入一下两个包 import java.lang.reflect.Field; import java.lang.reflect.Method; 给实体类赋值首先需要一个实体类,这

[译文]运行时利用反射动态地创建类的实例

介绍 通常我们使用类的名称创建一个实例/类的对象,例如,如果我有一个名为 User 的类,我们会去这样创建这个类. 1 User UR = new User(); 2 UR.ID = 1; 3 UR.Name = "Kailash"; 但如果有人你在让你在应用程序运行时或者通过字符串作为类名创建一个类的实例,你将如何做? 别担心,微软.Net 框架提供了一种解决方案. 在System.Reflection名称空间的 Assembly类和System名字空间的和Activator 类可以

C# 利用反射根据类名创建类的实例对象

“反射”其实就是利用程序集的元数据信息. 反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间. 1.假设你要反射一个 DLL 中的类,并且没有引用它(即未知的类型): Assembly assembly = Assembly.LoadFile("程序集路径,不能是相对路径"); // 加载程序集(EXE 或 DLL) object obj = assembly.CreateInstance("类的完全限定名(即包括命名空间)");

利用反射反编译某个类

1.首先创建一个员工类(可以反编译员工类,也可以编译String类或者其他类都可) public class Employee { static { System.out.println("Employee静态语句块执行..."); } private String name; private int age; private boolean gender; public Employee(){} public Employee(String name){} public String

通过反射来输出一个类的(包括其父类)所有方法

主函数: import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Arrays; public class reflec { public static void main(String[] args) throws NoSuchMethodException, ClassNotFoundException { TestClass r = new TestClass(); Class