簡體   English   中英

C#GetFields()從嵌套類中提取數據

[英]C# GetFields() extracting data from nested class

我想從某個對象獲取字段的信息,但會陷入從嵌套類中獲取數據的麻煩。 遞歸調用中的GetFields()返回FieldInfo[0]

這里的代碼示例。

 public class Test1
    {
        public string Name;
        public int Id;
        public object Value;
        public Test2 Test;
    }

    public class Test2
    {
        public float Value;
        public bool IsEnable;
    }

    class Program
    {
        static void Main()
        {
            var test1 = new Test1
                {
                    Name = "Test 1",
                    Id = 1,
                    Value = false,
                    Test = new Test2
                        {
                            Value = 123,
                            IsEnable = true,
                        },
                };

            GetTypeFields(test1);

            Console.ReadLine();
        }

        public static void GetTypeFields(object data)
        {
            var fields = data.GetType().GetFields();

            foreach (var fi in fields)
            {
                var type = fi.FieldType;

                if (type.IsValueType || type == typeof(string) || type == typeof(object))
                {
                    Console.WriteLine(fi.FieldType + " : " + fi.Name + " = " + fi.GetValue(data));
                }

                if (type.IsClass && type != typeof (string) && type != typeof(object))
                {
                    GetTypeFields(fi);
                }
            }
        }
    }

有人可以幫忙嗎?

你很親密 在第二個調用中,您需要調用GetTypeFields(fi.GetValue(data)) 當前,您正在向第二個調用提供FieldInfo對象,而不是實際的類對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM