zoukankan      html  css  js  c++  java
  • 反射加载程序集的几个方法的区别

    我们在使用反射加载程序集时,有3个方法可以选择。

    Assembly.Load方法

    Assembly.LoadFrom方法

    Assembly.LoadFile方法

    它们之前有何区别呢?

    区别:

    1.使用Assembly.Load加载程序集的顺序是怎样的呢?首先它会去全局程序集缓存查找,然后到应用程序的根目录查找,最后会到应用程序的私有路径查找。当然,如果你使用的是弱命名程序集(也就是没有应用这个dll),也即只给出程序集的名称,那么这个时候,CLR将不会在程序集上应用任何安全或者部署策略,而且Load也不会到全局缓存程序集中查找程序集。

     
    2、Assembly.LoadFile只载入相应的dll文件,比如Assembly.LoadFile("AAA.dll"),则载入AAA.dll,假如AAA.dll中引用了BBB.dll的话,BBB.dll并不会被载入。


    3、Assembly.LoadFrom则不一样,它会载入dll文件及其引用的其他dll,比如上面的例子,BBB.dll也会被载入。
    用Assembly.LoadFrom载入一个Assembly时,会先检查前面是否已经载入过相同名字的Assembly,比如AAA.dll有两个版本(版本1在目录1下,版本2放在目录2下),程序一开始时载入了版本1,当使用Assembly.LoadFrom("2\\AAA.dll")载入版本2时,不能载入,而是返回版本1。
    Assembly.LoadFile的话则不会做这样的检查,比如上面的例子换成Assembly.LoadFile的话,则能正确载入版本2

  • 相关阅读:
    Core Data
    scrollViews
    网络通信
    UIView
    textView取消键盘
    AFNetworking转载
    多线程
    css3[转载][菜单导航] 带有记忆功能的多页面跳转导航菜单
    jQuery翻牌或百叶窗效果
    jQuery联动日历(三)完成
  • 原文地址:https://www.cnblogs.com/rainnight/p/1833046.html
Copyright © 2011-2022 走看看