上次讲解了Assembly.Load方法加载程序集的一些步骤和知识点,今天我你们一起来看看另外两个方法,LoadFrom和LoadWithPartialName.它们和Load的区别又在哪里呢?
首先我们还是来看看LoadFrom方法,这个方法的原理是这样的:我们如果要使用它来动态加载程序集,必须告诉它程序集的路径,也即在哪个目录下面,CLR会去加载与你指定的路径完全匹配的程序集。记住,当我们指定程序集路径时,不能包括任何关于程序集强命名的信息,所以,CLR不会在我们指定的程序集文件上应用任何策略,而且也不会去任何其他的地方搜索程序集,简言之,它就是指哪打哪,呵呵。
例如:你有个程序集在D:/Test/MyAssembly.dll,你要用Assembly.LoadFrom加载该程序集,代码就如下:
Assembly assembly = Assembly.LoadFrom(@”D:/Test/MyAssembly.dll”);
对于,LoadWithParitalName方法,推荐大家最好不要使用它,因为程序无法确定最终要去加载哪个程序集的版本,所以我们这里只是简单的介绍一下它的工作原理:你可以传递一个程序集标识给它,包括程序集名称,至于其他信息是可选的(区域信息,公有密钥等),该方法执行时,会首先检查应用程序中配置文件的qualifyAssembly节点,如果存在,则把该部分名称的程序集替换成完全的程序集标识,如果不存在,则使用程序集名称先到应用程序根目录下查找,然后是私有目录,没有找到的话,就到程序集全局缓存中查找。简单过程如下:
应用程序根目录 -> 应用程序私有目录 -> 程序集全局缓存.
说完这三个方法,关于程序集的知识就告一段落了。对于初学.NET的朋友来说,可能其中很多概念不清楚,但是,请记住一句话,程序集是.NET中最重要的概念,一定要弄清楚,现在网上有很多关于程序集的介绍,如果要我推荐的话,我将推荐《.NET框架程序设计(修订版)》这本书给大家。也许不太适合初学者,但是本书值得一看再看。
下篇文章开始,我们就进入反射的世界,看看怎样把类的信息反射出来。到时再见