zoukankan      html  css  js  c++  java
  • C#反射获取类的成员变量名称及值

    //测试用的类
    public class PersonData
    {
        public string gender = string.Empty;
        public List<int> pifuRGB = new List<int>() { 0, 0, 0 };
        public int meiGray;
        string testStr = string.Empty;
    }
    
    void Fun(){
        PersonData p = new PersonData();
        //获取p对象中的public成员变量
        //GetType().GetProperties()是获取公开属性
        foreach(System.Reflection.FieldInfo item in p.GetType().GetFields())
        {
            if (item.FieldType.Equals(typeof(string)) || item.FieldType.Equals(typeof(int)) || item.FieldType.Equals(typeof(float)))
            {
                print(item.Name + " " + item.GetValue(p));
            }
            //泛型类型的处理
            else if (item.FieldType.Equals(typeof(List<int>)))
            {
                object subObj = item.GetValue(p);
                if (subObj != null)
                {
                    int count = Convert.ToInt32(subObj.GetType().GetProperty("Count").GetValue(subObj, null));
                        for (int i = 0; i < count; i++)
                        {
                            //获取列表子元素,若子元素是类,则再进行反射获取
                            object sub = subObj.GetType().GetProperty("Item").GetValue(subObj, new object[] { i });
                            int value = Convert.ToInt32(sub);
                            print(item.Name + " " + i + " " + value.ToString());
                        }
                }
            }
        }
    }
    
    蓝闪的博客 http://www.cnblogs.com/stan-si/
  • 相关阅读:
    execution(* *..BookManager.save(..))的解读
    metalink下载补丁包
    loop_login.sh
    EXPDP IMPDP 知识总结
    图书管理系统简单 过程
    Data Types
    Oracle 创建分页存储过程(转帖)
    绑定变量赋值
    Oracle10g、 Oracle11g完美共存
    Oracle11G 数据库 expdp、impdp使用示例
  • 原文地址:https://www.cnblogs.com/stan-si/p/15213161.html
Copyright © 2011-2022 走看看