【发布时间】:2015-05-17 07:01:23
【问题描述】:
我正在使用MEF 创建一个可扩展的应用程序,以允许我的客户开发自己的模块和扩展,我有一些特殊的导出,如集成模块,我想防止其他开发人员导入或重写该模块,请指导我该怎么做。
例如:我有IShellService
public interface IShellService
{
// providing the shell functions and properties
}
以及 DashboardModule 的接口
public Interface IDashboardModule {}
在模块中使用IShellService 如下所示:
Export(typeof(IModule))
public MyModule
{
[ImportConstructor]
public MyModule(IShellService shellservice)
{
// ...
}
}
如何确保MyModule 将在构造函数中使用我在Shell 中提供的Shell 服务,而不是某些模块创建的其他服务,因为可能有人会在其中导出具有此类型IShellService 的模块在这种情况下,MEF 会在两个导出值之间混淆,我希望它是一个导出和一个导入,没有人可以导出这种类型。
仪表板模块也有同样的问题,我只想要我的仪表板模块实现(导出)。
【问题讨论】:
-
您必须向我们提供程序的基本布局,您希望开发人员可以访问哪些部分以及他们不应访问哪些部分。
-
@eranotzap 我编辑了这个问题,谢谢。
标签: c# wpf module mef extensibility