.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 );
          

                     }

          }







         


.net 高级技术之程序集与反射的使用,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。