关于程序集Assembly.Load(path)的一些注意事项

2024-05-10 15:48

本文主要是介绍关于程序集Assembly.Load(path)的一些注意事项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.每一层是否是独立的程序集(也就是独立的项目)
  因为Assembly.Load(path)这里的path必须是一个程序集的名称,而不是类命名空间的名称。


2.请检查数据层是否实现了接口。
  SQLServerDAL下面的具体类是否实现了接口的定义,如:
  
3.请检查程序集名称和命名空间不一致。
  因为Assembly.Load(path)这里的path必须是一个程序集的名称
  CreateInstance(CacheKey)这里的CacheKey其实是需要反射的类型全名(包括命名空间的全路径)。
 所以,尽量让程序集名称和命名空间一致,这样的得到的类型全名=程序集名称+类名。
 否则,你需要把CacheKey换成实际的类型全名。
       

4.请检查BLL层是否添加了SQLServerDAL的项目引用。

》》》》》》》》》》》》》》》》》》》》》》》》》》

《《《《《《《《《《《《《《《《《《《《《《《《《《

方式一:通过类名来生成对象(优势:方便;劣势:不能以递增方式增加需转化成对象的类文件,即每次发布需整个项目重新编译)经测试正确 

public class FruitFactory 

 public IFruit MakeFruit(string Name) 
 { 
  IFruit MyFruit = null; 
  try 
  { 
   Type type = Type.GetType(Name,true); 
   MyFruit = (IFruit)Activator.CreateInstance(type); 
  } 
  catch (TypeLoadException e) 
   Console.WriteLine("I dont know this kind of fruit,exception caught - {0}" ,e.Message); 
   return MyFruit; 
 } 



方式二:通过反射(需提供文件路径,类名;优势:可以以递增文件的方式发布程序;劣势:生成文件麻烦)未测试 
/// <summary> 
        /// 创建对象(外部程序集) 
        /// </summary> 
        /// <param name="path">文件路径</param> 
        /// <param name="typeName">类型名</param> 
        /// <returns>创建的对象,失败返回 null</returns> 
        public static object CreateObject(string path, string typeName) 
        { 
            object obj = null; 
            try 
            { 

                obj = Assembly.Load(path).CreateInstance(typeName); 
            } 
            catch (Exception ex) 
            { 
                Debug.Write(ex); 
            } 

这篇关于关于程序集Assembly.Load(path)的一些注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976874

相关文章

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os

Idea调用WebService的关键步骤和注意事项

《Idea调用WebService的关键步骤和注意事项》:本文主要介绍如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选... 目录前言一、理解WebService的基本概念二、获取WSDL文件三、阅读和理解WSDL文件四、选择对接

python安装完成后可以进行的后续步骤和注意事项小结

《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装

JAVA中while循环的使用与注意事项

《JAVA中while循环的使用与注意事项》:本文主要介绍while循环在编程中的应用,包括其基本结构、语句示例、适用场景以及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录while循环1. 什么是while循环2. while循环的语句3.while循环的适用场景以及优势4. 注意

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab