您的位置:首页 > 编程语言 > C#

C#反射简单介绍

2013-02-22 16:07 337 查看
           #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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: