第31节:反射与特性(Type的使用方式)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haibing_zhao/article/details/82532033

//代码

/***************************************
 *  反射的概念
 *  1:反射是通过程序,了解以及调用“程序集”中程序的相关属性,方法,字段
 * 
 * ************************************/

using System;

using System.Reflection;

namespace 反射与特性
{
    class Demo1
    {
        /// <summary>
        /// Type查询类的普通信息
        /// </summary>
        public void Test1()
        {
            Person per = new Person();

            //Type实例可以获取类名称,所属命名空间、是否为公共类等以及类的字段、属性、方法等信息
            Type tyPersonObj = per.GetType();

            //显示类的名称
            Console.WriteLine(tyPersonObj.Name);
            //显示类所属的命名空间
            Console.WriteLine(tyPersonObj.Namespace);
            //显示所属的程序集
            Console.WriteLine(tyPersonObj.Assembly);
            //获取类的是否为公共、密封、私有
            Console.WriteLine(tyPersonObj.IsPublic);
            Console.WriteLine(tyPersonObj.IsSealed);
            Console.WriteLine(tyPersonObj.IsPrimitive);
        }

        /// <summary>
        /// Type查询类中的方法,属性,字段等信息
        /// </summary>
        public void Test2()
        {
            Person per = new Person();
            Type tyPersonObj = per.GetType();
            Console.WriteLine("---------------------------------");
            //得到字段信息
            FieldInfo[] fieArray = tyPersonObj.GetFields();
            foreach (FieldInfo item in fieArray)
            {
                Console.WriteLine(item.Name);
            }
            Console.WriteLine("---------------------------------");
            //得到方法信息
            MethodInfo[] metArray = tyPersonObj.GetMethods();
            foreach (MethodInfo item in metArray)
            {
                Console.WriteLine(item.Name);
            }
            Console.WriteLine("---------------------------------");
            //得到属性信息
            PropertyInfo[] proArray = tyPersonObj.GetProperties();
            foreach (PropertyInfo item in proArray)
            {
                Console.WriteLine(item.Name);
            }
            Console.WriteLine("---------------------------------");
        }
        static void Main(string[] args)
        {
            Demo1 obj = new Demo1();
            obj.Test1();
            obj.Test2();
            Console.ReadKey();
        }
    }
}

//调用的类

using System;
using System.Collections.Generic;
using System.Text;

namespace 反射与特性
{
    public class Person
    {
        public string Name;
        public int Age;
        private int _ID;

        //属性
        public int ID
        {
            get { return _ID; }
            set { _ID = value; }
        }

        //方法
        public void DisplayID()
        {
            Console.WriteLine(_ID);
        }
        public void DisplayName()
        {
            Console.WriteLine(Name);
        }
        public void DisplayAge()
        {
            Console.WriteLine(Age);
        }

    }
}


 

猜你喜欢

转载自blog.csdn.net/haibing_zhao/article/details/82532033