zoukankan      html  css  js  c++  java
  • .Net中使用aliases让相同命名空间的dll引用共存

    有些不得已的时候,我们需要同时在代码中使用某个dll的不同版本。比如用低版本的dll中的方法导出数据,然后使用高版本的方法导入数据来实现数据的升级. 又或者需要同时使用第三方的dll不同版本。如何使它们并存于系统中是个难题。

    如果同时存在于系统中,会出现ambiguous refrence(有歧义的引用)的编译错误。下文介绍如何使用aliases解决这个问题。

    一, 构建两个不同版本的Project

    首先构建2个不同的Project来模拟不同版本的dll引用, 这两个project中的命名空间和类名完全相同。

    在MultipleVersionTest项目中同时引用这两个Project. 如下图:

    blog1

    HighVersion项目中的代码

    复制代码
    public class NameProvider
    {
           public static string GetName()
           {
               return "Name From high version";
           }
    }
    复制代码

    LowVersion项目中的代码

    复制代码
    public class NameProvider
    {
           public static string GetName()
           {
               return "Name From Low version";
           }
    }
    复制代码

    在MultipleVersionTest项目中,

    复制代码
    class Program
    {
           static void Main(string[] args)
           {
               System.Console.WriteLine(NameProvider.GetName());
               System.Console.ReadLine();
           }
    }
    复制代码

    从下图能看出来, 出现的编译错误。

    blog2

    二,使用aliases区分不同的dll

    1. 在MultipleVersiontTest项目中,分别修改应用的Aliases, 从默认的global改成low和high

    blog11

    2. 使用extern alias,区分不同版本dll中的类

    复制代码
    extern alias low;
    extern alias high;
    
    namespace MultipleVersionTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                System.Console.WriteLine(low::NameFactory.NameProvider.GetName());
                System.Console.WriteLine(high::NameFactory.NameProvider.GetName());
                System.Console.ReadLine();
            }
        }
    }
    复制代码

    3. 编译成功,运行结果如下:

    blog22

     
  • 相关阅读:
    vue自定义指令
    ZOJ Problem Set–2104 Let the Balloon Rise
    ZOJ Problem Set 3202 Secondprice Auction
    ZOJ Problem Set–1879 Jolly Jumpers
    ZOJ Problem Set–2405 Specialized FourDigit Numbers
    ZOJ Problem Set–1874 Primary Arithmetic
    ZOJ Problem Set–1970 All in All
    ZOJ Problem Set–1828 Fibonacci Numbers
    要怎么样调整状态呢
    ZOJ Problem Set–1951 Goldbach's Conjecture
  • 原文地址:https://www.cnblogs.com/webenh/p/7692769.html
Copyright © 2011-2022 走看看