C#反射Assembly.Load("程序集").CreateInstance("命名空间.类")

在C#中,我们要使用反射,首先要搞清楚以下命名空间中几个类的关系:


      System.Reflection命名空间


      (1)   AppDomain:应用程序域,可以将其理解为一组程序集的逻辑容器


      (2)   Assembly:程序集类


      (3)   Module:模块类


      (4)   Type:使用反射得到类型信息的最核心的类


一个AppDomain可以包含N个Assembly,一个Assembly可以包含N个Module,而一个Module可以包含N个Type.


在程序中,如果我们要动态加载一个程序集怎么办呢?有几种方式可以使用,分别是Load,LoadFrom和LoadWithPartialName三个Assembly的静态方法.


Assembly.Load方法:

        使用Assembly.Load加载程序集的顺序是怎样的呢?首先它会去全局程序集缓存查找,然后到应用程序的根目录查找,最后会到应用程序的私有路径查找


关于反射Assembly.Load("程序集").CreateInstance("命名空间.类")


      而不管在哪一层写这段代码其中的("程序集")读取的实际是web层bin文件夹下的dll,也就是说你反射的类的程序集dll在web层的bin下必须有


      注意CreateInstance()一定是命名空间.类名,否则创建的实例为空


      Assembly.Load("程序集名")


      Assembly.LoadFrom("程序集实际路径")





转载请说明出处:原文链接 http://www.nbsite.cn/hdjs/137
标签: C#

相关阅读:

AspNet中WebFrom重写URL路径方法

字符串表达式计算 (使用DATATABLE)

C# NET DataTable导出Excel 并下载

Unity 接口注入示例