本章内容,并非我现在的工作内容所频繁使用的。特别是共享程序集相关内容,目前和以后都可能用的不多。
其中对“运行时”解析类型引用,知识点重点了解了一下。
强命名程序集是为了对程序集进行共享为目的,而提出的。着眼于以后的分布式开发。
作者想通过一个 “运行时”解析类型引用 的例子,说明CLR如果通过AssemblyRef这个记录项,获取强命名程序集信息,加载程序集的。
例如: “mscorlib, Version=4.0.0.0 Culture=neutral, PublicKeyToken=b77a5c561943s0d9”
虽然暂时用不着 共享程序集 ,但对于 这个例子描述的方法执行流程,还是应该好好学习学习的。
“运行时”解析类型引用
1,CLR加载当前程序,并初始化。
2,CLR读取程序集的CLR头,查找标识了应用程序入口方法(Main)的MethodDefToken.
3,CLR检索MethodDef元数据表,找到该方法的IL代码在文件的偏移量,把IL代码JIT编译成本地(native)代码,此过程中将保证类型是安全的。
3.1 CLR检查对类型和成员的所有引用,并加载定义了它们的程序集。
3.2 根据元数据的token键名,查询其在MemberRef元数据表中的记录项。
3.3 如果记录项目中存在字段引用一个TypeRef表中的记录项。根据其记录项可以查询到强命名程序集名。即可加载相关程序集。
4,执行本地代码。