在我的c#项目中,我正在使用第三方软件的类型库来传达该软件。但是当有人使用旧版本的第三方软件时,我必须加载另一个类型库(较旧版本),我该如何处理?
接下来就是,在类型库中可能会有一些变化,所以我的实际代码不起作用(也许!!)
答案 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