.NET 中的程序集与反射知识详解
1. 程序集的作用与类型引用
程序集边界不仅是代码的组织单元,还构成了类型可访问性的边界。在 C# 中, internal
访问修饰符可将类型的方法可访问性限制在单个程序集内。类型引用总是由类型所在的程序集进行作用域限定,一个类型的唯一引用(TypeRef)是定义该类型的程序集引用与包含命名空间的完全限定类型名的组合。
例如,以下局部变量声明:
System.Net.WebRequest wr;
在 MSIL 中表示为:
.assembly extern System.Net { .ver 1:0:2914:16 ... }
.locals(class [System.Net]System.Net.WebRequest wr)
这表明,为了明确引用一个类型,我们需要能够明确识别包含它的程序集。.NET Framework 的程序集命名机制比传统 COM 开发中的 ProgIDs 和 GUIDs 更强大。
2. 程序集的命名与签名
2.1 程序集的四部分名称
程序集通过四部分名称进行标识:
- 程序集的简单名称:定义在程序集清单中,通常与包含清单的模块名称相同,去掉扩展名。例如, MyAssembly.dll
的简单名称是 MyAssembly
。