如何扩展一个c# ASP.. NET类,如果DLL可能可用,也可能不可用

本文关键字:如果 DLL 也可能 ASP 扩展 何扩展 一个 NET | 更新日期: 2023-09-27 18:09:09

好的,按照插件的思路来考虑。

我有自己的dll,它有自己的功能。如果存在第三方dll,我将从该dll中扩展一个类。

一切都很好,除非第三方DLL丢失。这是问题的关键。

当dll不存在时,我得到这个异常:

"无法加载文件或程序集" SOME_THIRD_PARTY_ASSEMBLY,版本=1.0.0.0,文化=中性,PublicKeyToken=null'或其之一依赖关系。系统找不到指定的文件。"

这个想法是允许附加的功能,如果第三方dll存在,不允许的功能,如果不存在。

我知道我可以使用Reflection来测试一个类型是否存在,但是为了到达那部分代码,我必须让它越过上面的异常。

这并不是说我只需要知道一个类是否可用,我还扩展了这个类。

所以为了让我的dll编译,我需要在Visual Studio中添加一个对第三方dll的引用。

我能在某处捕获这个异常吗?我应该换个方式处理这件事吗?

如何扩展一个c# ASP.. NET类,如果DLL可能可用,也可能不可用

您可以将将第三方DLL扩展到另一个DLL的代码分开。然后,在您的"扩展管理器"dll中,使用配置文件将您的扩展程序集与第三方程序集相匹配。

因此,配置文件可以有一个包含两个条目的项,如" someeclass;inSome3rdPartDll"answers"yourClass;inYourDll"。

浏览配置文件,看看所列出的第三方程序集是否存在,如果存在,则在app域中加载相关的程序集。

现在,如果你想扩展未来的第三方程序集,你只需要添加你的dll并在配置文件中添加一行。

您也可以查看MEF并利用组合来完成此操作。

https://mef.codeplex.com

相关文章: