C#GetFields()从嵌套类中提取数据

本文关键字:提取 数据 嵌套 C#GetFields | 更新日期: 2023-09-27 18:22:09

我想从某个对象中获取字段的信息,但在从嵌套类中检索数据时遇到了困难。来自递归调用的CCD_ 1返回CCD_。

这里是代码示例。

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

有人能帮忙吗?

C#GetFields()从嵌套类中提取数据

你非常接近。在第二次呼叫中,您需要呼叫GetTypeFields(fi.GetValue(data))。目前,您正在为第二个调用提供FieldInfo对象,而不是实际的类对象。