C# 反射(一)Type类


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

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

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值