zoukankan      html  css  js  c++  java
  • 关于跨程序集的反射

        在开发中,经常会遇到这种情况,在A.dll中需要反射B.dll中的类型,如果稍不注意,就会产生运行时错误。关于跨程序集的反射,记住两点就可以:
    (1)如果使用typeof,编译能通过,则跨程序集的反射一定可以正常运行。可以说,typeof是支持强类型的。比如

    Type supType = typeof(EnterpriseServerBase.DataAccess.IDBAccesser) ;

        如果当前程序集没有添加对EnterpriseServerBase.dll的引用,则编译会报错。

    (2)如果使用Type.GetType,情况就复杂些,这是因为Type.GetType是非强类型的。Type.GetType的参数是一个string,当string表示的目标类型不在当前程序集中,则运行时Type.GetType会返回null。解决的办法是:首先加载目标程序集,然后再使用Assembly.GetType方法。如

                Assembly asmb = Assembly.LoadFrom("EnterpriseServerBase.dll") ;
                Type supType 
    = asmb.GetType("EnterpriseServerBase.DataAccess.IDBAccesser") ;

        注意,当使用Type.GetType的时候,即使你添加了对EnterpriseServerBase.dll的引用,Type.GetType("EnterpriseServerBase.DataAccess.IDBAccesser")也会返回null,这是因为Type.GetType只会在当前程序集中进行类型搜索!

  • 相关阅读:
    文件操作
    三级菜单(低端版VS高端版)
    字符串内置方法
    简单购物车的实现
    pandas常用函数
    1.在CentOS 7上安装Docker
    2. IDEA 在同一工作空间创建多个项目
    7.SpringMVC注解@RequestParam全面解析
    6.@RequiresPermissions 注解说明
    1. 构建第一个SpringBoot工程
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/242630.html
Copyright © 2011-2022 走看看