C#__使用Type类反射数据的基本用法

 // 简单介绍

// 元数据(metadata):与程序及其类型有关的数据。
// 反射:一个运行的程序查看本身元数据或其他程序集中的元数据的行为
// Assembly类:允许访问给定程序集的元数据,包含了可以加载和执行程序集

// 定义一个用于访问的类MyClass

    class MyClass
    {
        private int a, b;
        public int c;
        public string d;

        public string Name1 { get; set; }
        public string Name2 { get; set; }
        public void Test1() { }
        public void Test2() { }
    }

// 主函数调用

    class Program
    {
        static void Main(string[] args)
        {
            // 使用Type类可以反射数据
            // 定义

            // 方案一
            Type t1 = typeof(MyClass);
            // 方案二
            MyClass myclass = new MyClass();
            Type t2 = myclass.GetType();
            
            // 获取类名
            Console.WriteLine(t1.Name); // MyClass
            Console.WriteLine(t2.Name); // MyClass
            // 获取空间名
            Console.WriteLine(t1.Namespace); // TypeAndAssembly
            Console.WriteLine(t2.Namespace); // TypeAndAssembly
            // 获取程序集的基本信息 (空间名,版本,文化,公共钥匙符号)
            Console.WriteLine(t1.Assembly); // TypeAndAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
            Console.WriteLine(t2.Assembly); // TypeAndAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

            // 提取MyClass的字段的属性
            FieldInfo[] fis = t1.GetFields();
            foreach (FieldInfo fi in fis)
            {
                Console.WriteLine(fi.Name); 
                //c
                //d
            }

            // 提取MyClass的属性的 get 访问器。
            PropertyInfo[] pis = t2.GetProperties();
            foreach (PropertyInfo pi in pis)
            {
                Console.WriteLine(pi); 
                // System.String Name1
                // System.String Name2
            }

            // 提取Myclass的类函数(包含继承自父类的)
            MethodInfo[] mis = t2.GetMethods();
            foreach (MethodInfo mi in mis)
            {
                Console.WriteLine(mi);
                /*
                System.String get_Name1()
                Void set_Name1(System.String)
                System.String get_Name2()
                Void set_Name2(System.String)
                Void Test1()
                Void Test2()
                Boolean Equals(System.Object)
                Int32 GetHashCode()
                System.Type GetType()
                System.String ToString()
                 */
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_57233919/article/details/132338296