是否可以在不重新编译的情况下向 Prism 应用程序添加新控件
本文关键字:情况下 Prism 控件 新控件 添加 应用程序 编译 新编译 是否 | 更新日期: 2023-09-27 18:32:59
我Prism
应用程序中只有一个模块。让此模块具有名称ModuleA
,应用程序名称为 "CoolAppl"
。这个应用程序很酷,在生产中工作得很好。一旦有人想添加新按钮,例如"Delete Person"
,到这个应用程序"CoolAppl"
。
我的问题是我或另一个城市的人是否可以将新的按钮"Delete Person"
添加到应用程序"CoolAppl"
的ModuleA
中,而无需重新编译任何模块,只需添加带有必要按钮Delete Person
的 dll?
如果可能的话,请为我提供方向,我应该在哪里挖掘/搜索:)。
我正在使用这样的导航机制:
Uri wholeView = new Uri("ModuleA", UriKind.Relative);
regionManager.RequestNavigate(RegionNames.TheBottomRegion, wholeView);
var currentView = regionManager.Regions[RegionNames.TheWholeRegion].Views.ElementAt(0);
regionManager.Regions[RegionNames.TheWholeRegion].Remove(currentView);
用于识别模块的类如下所示:
public class ModuleAModule : ModuleBase, IModule
{
private readonly IRegionManager _regionManager;
private readonly IUnityContainer _container;
public ModuleAModule(IUnityContainer container, IRegionManager regionManager)
: base(container, regionManager)
{
_regionManager = regionManager;
_container = container;
}
protected override void InitializeModule()
{
RegionManager.RegisterViewWithRegion(RegionNames.TheWholeRegion, typeof(LoginControl));
}
protected override void RegisterTypes()
{
Container.RegisterType<IViewModel, MyViewModel>();
Container.RegisterTypeForNavigation<MySuperControl>();
}
}
如果没有重新编译意味着"不重新编译所有内容",那么你可以重新编译 ModuleA。如果这意味着"什么都不重新编译",那么你就不走运了。如果新按钮不需要位于模块 A 中,则可以创建新的模块 B,而无需重新编译 CoolAppl 或模块 A(但您需要编译模块 B)。
不过,您可能已经放置了一个插件系统,可以从插件加载按钮,然后您可以为新按钮添加另一个插件。