我们有一个学习管理系统,可以作为模块集安装到DotNetNuke框架中。我们想为我们的LMS添加一些扩展,它们利用第三方模块提供的一些API调用。第三方模块非常昂贵,并非所有客户都想购买它。因此,如果第三方模块不存在,我们必须使扩展名可选并禁用它们。
这是我的问题。我们如何构建我们的软件,以便它可以在有或没有第三方DLL的情况下运行?如果我们引用API方法的第三方DLL,那么即使我们禁用了这些功能,如果没有安装第三方模块,我认为会出现运行时错误。
如何避免未安装第三方模块的客户端出现运行时错误?
谢谢, 克里斯
答案 0 :(得分:0)
您可能需要反射,而不是在编译时引用第三方DLL,使用“添加引用”,使用Assembly.Load方法在RunTime动态加载它。
如果客户已经安装了所需的框架 - 如果不需要,请执行任何操作 - 无编译或其他错误。
答案 1 :(得分:0)
如果您没有执行任何调用程序集的代码,您的应用程序将在没有程序集存在的情况下运行。即使没有做任何反射技巧。
我过去通过保证没有代码调用依赖注入和应用程序启动的第三方程序集,而不是注册任何引用第三方的实现来完成此操作。而是注册不同的实现或存根实现。
或任何其他保证不会调用调用第三方的代码的方法。