2016-02-03 85 views
0

我在Prism應用程序中只有一個模塊。讓該模塊名稱爲ModuleA,應用程序名稱爲"CoolAppl"。這個應用程序很酷,它在生產中的確很好。一旦有人想添加新的按鈕,例如"Delete Person",到這個應用程序"CoolAppl"是否可以在沒有重新編譯的情況下將新控件添加到Prism應用程序?

我的問題是我或者從另一個城市的人可以僅僅通過必要的按鈕Delete Person添加DLL添加新的按鈕"Delete Person"應用"CoolAppl"ModuleA無需重新編譯任何模塊?

如果可能的話,請給我指示我應該挖掘/搜索的方向:)。

我使用的是這樣的機制導航的:

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); 

而且類identificate模塊看起來像這樣:

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>();    
    } 
} 
+0

對你的問題沒有一般的答案。我們甚至不知道你如何實現導航,查看發現等。更具體地說,描述你的應用程序,提供相關的代碼。 – dymanoid

+0

@dymanoid我添加了新的代碼。感謝您的建議 – StepUp

回答

2

如果沒有重新編譯的意思是「不重新編譯一切」,那麼你可以重新編譯ModuleA。如果它的意思是「根本沒有重新編譯」,那麼你的運氣不好。 如果新按鈕不需要位於ModuleA中,則可以在不重新編譯CoolAppl或ModuleA的情況下創建新的ModuleB(但需要編譯ModuleB)。

不過,您可能已經放置了一個插件系統,可以從插件中加載按鈕,然後您可以爲新按鈕添加另一個插件。

+0

我應該重新編譯我的'CoolAppl'在'bootstrapper','ModuleA'和另一個人中新添加的Control'中擁有'unityContainer'嗎? – StepUp

+0

我不確定你的意思。統一容器由引導程序創建,所有模塊都是相同的。根據您的模塊目錄,您必須重新編譯應用程序,編輯配置文件或將新模塊放在正確的位置(即文件夾)。 – Haukinger

+0

如果我將新控件('ModuleByBill')放在正確的位置,那麼可以在'CoolAppl'中存在的'ModuleA'和新添加的'ModuleByBill'之間進行通信,而無需重新編譯'ModuleA'和'Bootstrapper'? – StepUp

相關問題