不同版本的不同类型库

时间:2017-02-16 15:04:10

标签: c# dll

在我的c#项目中,我正在使用第三方软件的类型库来传达该软件。但是当有人使用旧版本的第三方软件时,我必须加载另一个类型库(较旧版本),我该如何处理?

接下来就是,在类型库中可能会有一些变化,所以我的实际代码不起作用(也许!!)

1 个答案:

答案 0 :(得分:2)

首先,您应该创建一个包含第三方库功能的接口。如果这样做,您可以拥有该接口的2个实现。每个版本的第三方库一个。

public interface IWrapThirdParty {
  void ThirdPartyMethodOne(); 
  int ThirdPartyMethodTwo();
}

 public class ThirdPartyV1Wrapper : IWrapThirdParty {
  public void ThirdPartyMethodOne() {
    ThirdPartyV1 obj = new ThirdPartyV1();
    obj.ThirdPartyMethodOne();
  }
  public int ThirdPartyMethodTwo(){
    ThirdPartyV1 obj = new ThirdPartyV1();
    return obj.ThirdPartyMethodTwo();
  }
}

要解决加载库的问题:

你想出来之后你可以使用Assembly.Load()方法,你要加载哪个版本。但请注意,永远不要加载装配2次。

https://msdn.microsoft.com/en-us/library/system.reflection.assembly.load(v=vs.110).aspx

要检查程序集是否已全部加载,您可以使用AppDomain.CurrentDomain.GetAssemblies()方法,该方法将返回当前加载到AppDomain中的所有程序集。

https://msdn.microsoft.com/en-us/library/system.appdomain.getassemblies(v=vs.110).aspx