黑马程序员----.net 高级技术之程序集与反射的使用

           源代码被编译成程序集:

          c#代码会被编译器编译成程序集。程序集包括资源文件,类型元数据(命名空间,类的成员及类的关系的信息,相当于类的关系表,MSIL代码(程序的执行代码,被装在.exe或者.dll中),程序集元数据(有关程序集的信息)。其中,含有main方法的类被编译成.exe程序集。其他类库被编译成.dll程序集。类库的编译是即时编译,即只有当需要访问类库时,才会将其编译 成.dll程序集。

        程序集的使用:
            不能将自己定义的类库直接给别人使用,不能让别人看到实现代码,只能给别人类库编译生成的.dll程序集,让其引用程序集,调用类的属性和方法。
            就像我们引用系统程序集调用系统类的属性和方法一样。
         可通过直接引用和反射的方式来使用程序集:

           1 直接引用程序集:
            可添加路径并引用(using)程序集。

          2通过反射动态加载程序集:
            反射:动态加载程序集,通过type类获得程序集的类型信息(类的成员)。

           获得type类的三种方式:
            通过实例获得type:Type t=实例名.GetType()得到type类的实例,从而得到程序集(类库)信息。
            通过类获得:Type t=(typeof)类名
            通过程序集获得:Assembly myas=Assembly.LoadFile(path);  加载需要的程序集
            Type [] myTypes=myas.GetType();    获得程序集所有的类型信息
             foreach(Type t in myType)           遍历得到每个类的type类
            {
               
System .Reflection .MethodInfo []  mi=   t.GetMethods();

                  for (int i = 0; i < mi.Length; i++)
                     {
                    MessageBox.Show(mi[i].Name );
          

                     }

          }







         


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值