首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

反照动态加载程序集Assembly.Load和Assembley.LoadFrom

2013-03-01 
反射动态加载程序集Assembly.Load和Assembley.LoadFrom抽象工厂需要借助反射机制来更好的实现,反射即动态

反射动态加载程序集Assembly.Load和Assembley.LoadFrom

        抽象工厂需要借助反射机制来更好的实现,反射即动态加载某个程序集,从程序集中获得一个类从而动态实例化出一个对象。抽象加反射大大降低了耦合度。

动态加载程序集的有两种方法Assembly.Load和Assembly.LoadFrom。

        Assembly.Load方法

        Assembly.Load方法通过程序集的名称(包括程序集名,版本信息,语言文化,公钥标记)来加载程序集,而且会加载此程序集引用的其他程序集。Assembly.Load方法加载程序集步骤:如果程序集有强名称,在首先在全局程序集缓(GAC)中查找程序集,在程序集的强名称没有正确指定或GAC中找不到的情况下,通过配置文件中的<codebase>元素指定的URL来查找,最后在没有指定强名称或是在GAC中找不到,CLR会探测特定的文件夹中是否存在该程序集。

         加载指定强名称的程序集Assembly.Load(“MyAssembly,Version=1.0.0.0,culture=zh-CN,PublicKeyToken=47887f89771bc57f”)此方法安全、效率高

加载若名称程序集方法Assembly.Load(“MyAssembly”)此方法很可能找不到该程序集,从而抛出异常。

         Assembly.LoadFrom方法

         Assembly.LoadFrom方法通过指定的路劲加载程序集,这个方法被调用的时候会将程序集版本,语言文化,公钥标记等信息传递给 Load方法,通过Load方法查找程序集,然后将找到程序集的路径与LoadFrom比较,如果路径相同,该程序集会被认为是应用程序的一部分,如果路径不同或Load方法没有找到程序集,那该程序集只是被作为一个“数据文件”来加载,不会被认为是应用程序的一部分。

       加载指定路径下的程序集Assembly.LoadFrom(@”D:/Test/MyAssembly.dll”)标准写法

       或Assembly.LoadFrom(” MyAssembly.dll”)这样程序会到指定文件夹下去查找名为MyAssembly.dll的程序集,一般文件夹为应用程序根目录下。

热点排行