1

多年来,我在 Win32 和 C/C++ 中完成了插件架构,扩展点从 DLL 动态加载,带有LoadLibrary,GetProcAddress等。

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

4

3 回答 3

3

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

另一种选择是MEF,它也将成为 .NET 4 的一部分,但预览版也适用于当前的 .NET 框架。

于 2010-01-28T09:38:48.617 回答
1

您可以使用 System.Addin 命名空间中的类。请参阅此讨论: 在 MEF 和 MAF 之间进行选择(System.AddIn)

这里也是一个演示:AddIn Enabled Applications

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

于 2010-01-28T09:43:48.070 回答
1

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

于 2010-01-28T09:45:32.457 回答