在C#应用程序中获取插件或扩展功能的步骤是什么?

时间:2010-01-28 09:36:54

标签: c# architecture plugins extensibility

我在Win32&amp ;;中完成了插件架构。 C / C ++多年,扩展点从LoadLibraryGetProcAddress等的DLL动态加载。

现在是C#的时候了。那里有相应的步骤 - 动态加载程序集?或者它是一个完全不同的架构?

3 个答案:

答案 0 :(得分:3)

通常,您可以查看插件的位置,加载程序集并查找某些类。通常,插件通过扩展某种插件基类或实现接口来宣传自己。

另一个选项是MEF,它也是.NET 4的一部分,但预览版本也适用于当前的.NET框架。

答案 1 :(得分:1)

您可以使用System.Addin命名空间中的类。请参阅此讨论: Choosing between MEF and MAF (System.AddIn)

这也是一个演示:AddIn Enabled Applications

另一个解决方案是使用Mono.AddIn,它看起来非常强大。

答案 2 :(得分:1)

在.Net应用程序中,我们可以使用AppDomain和AppDomain.CurrentAppDomain动态地将程序集加载到我们的应用程序。问题是,一旦将程序集加载到AppDomain,就可以卸载程序集。有一种解决方法可以解决这个问题。可以在不同的AppDomain中加载这些程序集,并在不需要这些程序集时卸载它。但是这种方法非常复杂,因为在两个不同的AppDomain中的两个程序集之间传递对象并不容易。