【发布时间】:2013-08-27 13:12:04
【问题描述】:
根据Create composite modular UI application in WPF using MEF and PRISM 文章的指导,我正在构建一个小型、简单(目前)的模块化应用程序。到目前为止,我有一个主窗口,有两个区域、一个 Bootstrapper 类和两个模块项目 ModuleA 和 ModuleC,它们只导出它们自己。他们还各自在主窗口的一个区域中放置一个视图(UserControl),例如:
[ModuleExport(typeof(ModuleC))]
public class ModuleC: IModule
{
public void Initialize()
{
IRegionManager regionManager = (IRegionManager)ServiceLocator.Current.GetInstance(typeof(IRegionManager));
regionManager.Regions["Region2"].Add(new MoneyUserControl());
}
}
我的愿景是在MainWindow 中拥有一个较大的 UI 区域,供当前正在使用的高级应用功能使用,并且该功能是一个导入模块。虽然这些模块有很多共同点,并且目前是单体应用程序的一部分,但我一直在努力争取基本上只是一个提供基本服务的框架 (MainWindow),而应用程序的每个功能都作为一个模块导入。
我希望活动模块向主窗口提供菜单项(命令)。我很容易“手动”执行此操作,例如一个IModuleWithMenu接口,并在主窗口查询并集成菜单,或主窗口上的'IMenuHost`接口,并让模块将其菜单命令推入。
但是,我不禁想到必须有更好的方法,因为我已经在使用 MEF,并且有已加载模块的导出和导入目录。当然,我可以查询导出并过滤那些命令,并将它们连接到菜单或其他形式的命令调用,但 MEF 不提供类似的东西已经制作或关闭,我将自己的代码保持在一个最低限度,因此存在错误的风险。
作为一个额外的问题:是否有人拥有关于使用 MEF 构建复合应用程序的非常好的教程的副本或链接(主要在 WPF 中,但我可以为其他人改编 WPF),因为它应该这样做。我完成的这篇文章只是对模块、目录和 MEF 本身的一个小介绍。我想要一些非常非常技术性和深度的东西。甚至可以买书。
【问题讨论】:
标签: .net wpf prism mef extensibility