• 通过反射得到类型的所有成员


    下面代码演示了如何通过反射技术得到某个类型的所有成员。需要注意的是,默认情况下,GetMembers方式是只能读取公有成员的,如果需要读取所有的成员,则需要用下面的方式

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Type t = typeof(Employee);
    
    
                Console.WriteLine();
                //下面的方法打印所有的Member
                Console.WriteLine("所有公有成员");
                foreach (var item in t.GetMembers(BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance))
                {
                    if (item.MemberType.ToString() == "Field")
                    {
                        FieldInfo field = (FieldInfo)item;
                        Console.WriteLine(
                            "{0}{1}{2}",
                            field.Name.PadRight(30),
                            string.Format("Field({0})", field.FieldType.ToString()).PadRight(30),
                            field.FieldType.IsValueType);
                    }
                    else
                    {
    
                        Console.WriteLine(
                            "{0}{1}{2}",
                            item.Name.PadRight(30),
                            item.MemberType.ToString().PadRight(30),
                            item.GetType().IsValueType
                            );
                    }
                }
    
    
    
                Console.Read();
            }
        }
    
        class Employee {
            public string publicField;
            private int privateField;
    
            internal int internalField;
            protected int protectedField;
    
    
            public string Name { get; set; }
    
            public void SomeMethod() { }
            private void SomeMethod2() { }
    
            public event EventHandler SomeEvent;
    
            public static int staticField;
    
        }
    }
    

    image

  • 相关阅读:
    [Go] Slice
    [Go] Array
    [Go] if scoped variable
    AcWing 345 牛站 【BellmanFord算法,非正解】
    AcWing 345 牛站
    P1962 斐波那契数列
    【Oracle】Oracle的回滚段和同时读写的处理
    【Mybatis】Mybatis的批量执行SQL语句 与 返回值问题
    @RestController的依赖包
    【ObjectMapper/Json】Json转字符串数组和对象数组
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1690579.html
Copyright © 2020-2023  润新知