.Net 不同版本的.Net框架的代码之间互相引用

有时候想用高版本的.Net框架,而某一部分封装好的工具类是低版本的

例: 使用.Net 4.7.2写的主程序,需要引用.Net 4.5.2写的数据库帮助类,因为数据库帮助类已经引用了对应4.5版本的Mysql.dll或其他的数据库引擎提供的dll,不方便更改帮助类的框架

     就可以使用这个方法对.Net 4.5.2的数据库帮助类进行调用

Config配置文件里:

   

   

   

        

           

               

               

               

                

                 

           

       

   

调用时:

Assembly ass = Assembly.Load("要调用的程序集的命名空间名称,那个程序集Assembly里的版本号,Culture=neutral,根据签名计算出来的token"); // 反射加载出程序集 Assembly里的版本对应Configuration里CodeBase的Version

T instance = (T) ass.CreateInstance(程序集命名空间.类名); //创建实例  静态类参考静态类反射调用的方法创建实例

MethodInfo method = instance.GetType().GetMethod(要调用的方法名); //反射获取到方法信息,准备调用

object o = method.Invoke(该方法所处类的实例,该方法所需要的参数信息); //调用方法,返回object类型的值

参考文献:

  • 微软手册 -> Configuration节点内的详细信息和注释

  • 微软手册 -> 用Assembly.Load调用长名称的程序集  -> 程序集名称的长格式包含其简单名称 (如 System .dll 程序集的 "System") 及其版本、区域性、公钥标记, 还可以是其处理器体系结构 

  • CSDN -> .Net dll多个同名的程序集版本冲突共存与通过基本代码或探测定位程序集方案

  • 博客 -> 如何创建强命名程序集, 如何查看强命名程序集的PublicKeyToken

你可能感兴趣的:(技术,.net)