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());
                    }
            }
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM