源代码被编译成程序集:
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 );
}
}
本文详细介绍了C#源代码如何被编译为程序集的过程,包括程序集的组成要素、使用方法以及如何通过直接引用和反射来加载和使用程序集。着重阐述了程序集在软件开发中的重要角色,以及如何实现类库的封装与复用。
3622

被折叠的 条评论
为什么被折叠?



