关于跨程序集的反射
来源:互联网 发布:excel数据录入系统 编辑:程序博客网 时间:2024/05/22 16:48
在开发中,经常会遇到这种情况,在A.dll中需要反射B.dll中的类型,如果稍不注意,就会产生运行时错误。关于跨程序集的反射,记住两点就可以:
(1)如果使用typeof,编译能通过,则跨程序集的反射一定可以正常运行。可以说,typeof是支持强类型的。比如
(2)如果使用Type.GetType,情况就复杂些,这是因为Type.GetType是非强类型的。Type.GetType的参数是一个string,当string表示的目标类型不在当前程序集中,则运行时Type.GetType会返回null。解决的办法是:首先加载目标程序集,然后再使用Assembly.GetType方法。如
(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只会在当前程序集中进行类型搜索!
Type supType = asmb.GetType("EnterpriseServerBase.DataAccess.IDBAccesser") ;
- 关于跨程序集的反射
- 关于跨程序集的反射(续)
- 关于跨程序集的反射(续)
- 关于反射程序集的心得
- 关于反射的一些程序
- 关于程序中使用反射时混淆造成的问题
- 关于反射Assembly.Load("程序集").CreateInstance("命名空间.类")
- 关于反射Assembly.Load("程序集").CreateInstance("命名空间.类")
- 一个反射程序集的例子
- 反射程序集时的占用问题。
- 关于.NET的反射
- 关于反射的应用
- 关于反射的基础知识
- 关于flex的反射
- 关于数组的反射
- 关于Java的反射
- 关于反射的补充
- 程序集和反射
- 推荐所有的.NET开发人员阅读《J2EE Development without EJB》
- EsbAOP应用--权限管理
- EsbAOP应用--异常关闭器
- EnterpriseServerBase的AOP--EsbAOP实现
- 企业开发基础设施--事件通知服务(Remoting双向通信)
- 关于跨程序集的反射
- 异步调用轻量级封装AsynCaller
- 企业开发基础设施--类厂服务
- 企业开发基础设施--序
- 直观而简单的解决方案--软件设计的永恒追求
- 面向对象与面向组件小议
- macros.h
- 我是程序员
- 项目管理实战之团队管理