利用system.reflection遍历一个类的变量成员

Posted dejex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用system.reflection遍历一个类的变量成员相关的知识,希望对你有一定的参考价值。

假设有下面一个类,在程序中已初始化,如何获取里面的变量成员name,age,onduty及其值呢?

public class Employee
    {
        public string name;
        public int age;
        public bool onduty;
    }

上测试代码:

private void button1_Click(object sender, EventArgs e)
        {
            Employee employee = new Employee { name = "Dejex", age = 30, onduty = true };
            System.Reflection.FieldInfo[] members = employee.GetType().GetFields();
            foreach (var m in members)
            {
                string name = m.Name; //获取变量名
                var value = m.GetValue(employee); //获取变量值
            }
        }

用以上句子可以获取变量名和变量值。

扩展:

System.Reflection.MemberInfo[] members = employee.GetType().GetMembers();//获取所有成员,包括方法成员
var mtype=member.MemberType; //成员类型,method,field...

其他属性啦、接口啦...都有相应的方法可以获取

 

以上是关于利用system.reflection遍历一个类的变量成员的主要内容,如果未能解决你的问题,请参考以下文章

反射学习:(System.Reflection)

反射遍历对象属性名与值

反射学习--------利用反射调用方法

命令绑定无法将“System.Reflection.RuntimeEventInfo”类型的对象转换为“System.Reflection.MethodInfo”类型

文本框绑定无法将“System.Reflection.RuntimeEventInfo”类型的对象转换为“System.Reflection.MethodInfo”类型

序列化“System.Reflection”类型的对象时检测到循环引用