我在Win32&amp ;;中完成了插件架构。 C / C ++多年,扩展点从LoadLibrary
,GetProcAddress
等的DLL动态加载。
现在是C#的时候了。那里有相应的步骤 - 动态加载程序集?或者它是一个完全不同的架构?
答案 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中的两个程序集之间传递对象并不容易。