C# 反射(一)Type类

来源:互联网 发布:软件注册码 编辑:程序博客网 时间:2024/05/16 04:38


什么是反射:反射就是通过类对象,获取字段,属性,方法。

using System;using System.Reflection;namespace Study{    class MainClass    {        public static void Main(string[] args)        {            Console.WriteLine("-----------------------------Hello Types!-------------------------------");            People people = new People(18, "han");            //getFieldInfo(people);           // getPropertyInfo(people);           //getMethoedInfo(people);           // getMemberInfo(people);            getConstructors(people);        }        /// <summary>        /// 获取公共字段        /// </summary>        /// <param name="obj">Object.</param>        public static void getFieldInfo(object obj ){            Type type = obj.GetType();            FieldInfo[] arrFieldInfo =  type.GetFields();            foreach (FieldInfo fieldInfo in arrFieldInfo)            {                Console.WriteLine("name:" + fieldInfo.Name);                Console.WriteLine("type:" + fieldInfo.FieldType.ToString());                Console.WriteLine("value:" + fieldInfo.GetValue(obj).ToString());            }            Console.WriteLine("------------------GetFields字段");        }        /// <summary>        /// 获取熟悉        /// </summary>        /// <param name="obj">Object.</param>public static void getPropertyInfo(object obj){Type type = obj.GetType();PropertyInfo[] arrPropertyInfo = type.GetProperties();foreach (PropertyInfo propertyInfo in arrPropertyInfo){Console.WriteLine("name:" + propertyInfo.Name);Console.WriteLine("property:" + propertyInfo.PropertyType);Console.WriteLine("value:" + propertyInfo.GetValue(obj).ToString());}Console.WriteLine("--------------------GetProperty获取属性");           }        /// <summary>        /// 获取方法        /// </summary>        /// <param name="obj">Object.</param>        public static void getMethoedInfo(object obj){            MethodInfo[] arrMethodInfo = obj.GetType().GetMethods();            foreach (MethodInfo mathodInfo in arrMethodInfo)            {                Console.WriteLine("name:"+mathodInfo.Name);                //Console.WriteLine(""+mathodInfo.GetParameters().ToString());}Console.WriteLine("----------------------GetMethodInfo获取方法");}        public static void getMemberInfo(object obj)        {            MemberInfo[] arrMemberInfo = obj.GetType().GetMembers();            foreach (MemberInfo memberInfo in arrMemberInfo)            {                Console.WriteLine("name:"+memberInfo.Name);}Console.WriteLine("----------------------GetMethodInfo获取方法");        }public static void getConstructors(object obj){            ConstructorInfo[] arrConstructornfo = obj.GetType().GetConstructors();            foreach (ConstructorInfo constructroInfo in arrConstructornfo){Console.WriteLine("name:" + constructroInfo.Name);                ParameterInfo[] parameterInfo = constructroInfo.GetParameters();}Console.WriteLine("----------------------GetMethodInfo获取方法");}    }    class People    {        /// <summary>        /// 字段        /// </summary>        private int sex=0;        private string work=" no work";        public int weight = 90;        public string m_iId="68";        /// <summary>        /// 熟悉        /// </summary>        /// <value>The m  i age.</value>        public int m_iAge { get; set; }        public string m_sName { get; set; }        /// <summary>        /// 构造函数        /// </summary>        public People()        {            this.sex = 1;            this.work = "student";        }        public People(int age,string name){            this.m_iAge = age;            this.m_sName = name;        }        /// <summary>        /// 公共方法        /// </summary>        public void sing(){            Console.WriteLine("sing");        }        public void wark(){            Console.WriteLine("working");        }        public void dance(){            Console.WriteLine("dance");        }    }}


原创粉丝点击