C# Reflection反射

反射时一种允许用户获得累心信息的C#功能。Type对象映射它所代表的底层对象,对Type对象进行查询可以获得与类型相关的信息。反射的类都位于System.Reflection名称空间中,它们是.NET Reflection API的一部分。因此,在使用反射的程序中通常包含以下代码行:using System.Reflection。Type类派生与System.Reflection.MemberInfo抽象类,MemberInfo类定义的只读属性有以下:

1.MemberTypes MemberType 获取成员的类型。包括成员字段、方法、属性、事件、构造函数

2.string Name 成员的名称

3.Module Module 获取一个代表反射类型所在模块的Module对象

4.Type ReflectedType 反射的对象的类型

除了MemberInfo类定义的方法之外,Type类还添加了许多自己的方法:

1.MethodInfo[]GetMethods() 获取指定类型的方法列表

2.MemberInfo[]GetMembers() 获取指定类型的成员列表

3.PropertyInfo[]GetProperties() 获取指定类型的属性列表

4.EventInfo[]GetEvents() 获取指定类型的事件列表

5.ConstructInfo[]GetConstructors() 获取指定类型的构造函数列表

用反射获取方法的相关信息:

using System.Reflection;
using System;
class MyClass
    {
        int x, y;
        public MyClass(int i, int j)
        {
            x = i;
            y = j;
        }
        public int Sum()
        {
            return x + y;
        }
        public void Set(int a, int b)
        {
            x = a;
            y = b;
        }
        public void Set(double a, double b)
        {
            x = (int)a;
            y = (int)b;
        }
        public void Show()
        {
            Console.WriteLine("x:{0},y:{1}", x, y);
        }
    }
class Program
    {
        static void Main(string[] args)
        {
            Type t = typeof(MyClass);  //获取Type对象代表MyClass
            MethodInfo[] mi = t.GetMethods();  //调用Type方法
            foreach (MethodInfo m in mi)
            {
                Console.WriteLine(m.ReturnType.Name + " " + m.Name);  //输出方法类型和方法名
                ParameterInfo[] pi = m.GetParameters();
                for (int i = 0; i < pi.Length; i++)
                {
                    Console.WriteLine(pi[i].ParameterType.Name + " " + pi[i].Name);//输出参数类型和参数名
                }
            }
            Console.ReadLine();
        }
    }

输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值