如果DLL可能可用或不可用,如何扩展C#ASP.NET类?

时间:2013-04-15 13:49:06

标签: c# asp.net .net reflection umbraco

好的,请按照插件的方式思考。

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

除非缺少第三方DLL,否则一切都很有效。这是问题的症结所在。

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

  

“无法加载文件或程序集”SOME_THIRD_PARTY_ASSEMBLY,   Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其中一个   依赖。系统找不到指定的文件。“

如果第三方dll存在,则允许其他功能,如果不存在则不允许使用该功能。

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

这不是我必须知道一个班级是否可用,我也在扩展班级。

因此,为了让我的DLL能够编译,我需要在Visual Studio中添加对第三方dll的引用。

我可以在某个地方捕获此异常吗?我应该以不同的方式解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

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

因此,配置文件可能有一个项目有两个条目,如“someClass; inSome3rdPartDll”,然后是“yourClass; inYourDll”。

浏览配置文件以查看列出的第三方程序集是否存在,如果存在,则在应用程序域中加载关联的程序集。

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

Here's a link有关将程序​​集加载到应用程序域的帮助。

答案 1 :(得分:0)

您还可以查看MEF并利用组合来实现这一目标。

https://mef.codeplex.com