C#反射简单介绍

           #region 加载指定的程序集,并且获取该程序集中的所有的类型

            1.加载c:\TestLib.dll 程序集
            现在asm就是TestLib.dll程序集
            //Assembly asm = Assembly.LoadFile(@"c:\TestLib.dll");

            2.获取asm这个程序集中的所有的类型
            获取所有类型,包含public类型与非public类型
            Type[] types = asm.GetTypes();

            获取程序集中的所有的public的类型
            //Type[] types = asm.GetExportedTypes();//只有public类型才能获取的到。

            循环遍历把每个类型都输出
            //foreach (Type typeItem in types)
            //{
            //    Console.WriteLine(typeItem.Name);
            //}

            //Console.ReadKey();

            #endregion


            #region 加载程序集,获取Class1下的所有的方法

            //1.加载程序集
            Assembly asm = Assembly.LoadFile(@"c:\testlib.dll");
            //2.获取Class1这个类型
            //typeClass1就表示描述Class1类的type,里面存储的就是Class1的一些相关信息.就可以理解成是Class1的元数据
            Type typeClass1 = asm.GetType("TestLib.Class1");

            #region 获取当前类型中的所有的非protected非private方法。

            3.获取Class1中的所有的方法

            //MethodInfo[] minfos = typeClass1.GetMethods();

            4.遍历每个方法,把每个方法的名称打印出来。
            //foreach (MethodInfo methodItem in minfos)
            //{
            //    Console.WriteLine(methodItem.Name);
            //}
            //Console.ReadKey();

            #endregion

            #region 获取SayHi方法
            MethodInfo method = typeClass1.GetMethod("SayHi");

            //输出该方法名
            Console.WriteLine(method.Name);
            //创建一个Class1类型的对象
            object obj=Activator.CreateInstance(typeClass1);


            //调用该方法
            method.Invoke(obj, null);//由于SayHi方法没有参数,所以第二个参数传递一个null

            Console.ReadKey();

            #endregion

            #endregion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值