2009-07-17 46 views
2

誰能解釋的差異之間這樣的模塊加載在棱鏡:這兩種在Prism中加載模塊的方式有什麼區別?

protected override void InitializeModules() 
{ 
    IModule customerModule = Container.Resolve<CustomerModule.CustomerModule>(); 
    IModule helloWorldModule = Container.Resolve<HelloWorldModule.HelloWorldModule>(); 

    customerModule.Initialize(); 
    helloWorldModule.Initialize(); 
} 

這樣

protected override IModuleCatalog GetModuleCatalog() 
{ 
    ModuleCatalog catalog = new ModuleCatalog() 
     .AddModule(typeof(CustomerModule.CustomerModule)) 
     .AddModule(typeof(HelloWorldModule.HelloWorldModule)); 
    return catalog; 
} 

我見過兩種方式中的演示,但據我可以告訴他們做的相同的東西,都似乎通過我需要在我的模塊容器和regionManager:

public class CustomerModule : IModule 
{ 
    public IUnityContainer Container { get; set; } 
    public IRegionManager RegionManager { get; set; } 

    public CustomerModule(IUnityContainer container, IRegionManager regionManager) 
    { 
     Container = container; 
     RegionManager = regionManager; 
    } 

    public void Initialize() 
    { 
     RegionManager.RegisterViewWithRegion("MainRegion", typeof(Views.CustomerView)); 
    } 

} 
+1

在Prism v4中,GetModuleCatalog()已被重命名爲CreateModuleCatalog()。 – Jedidja 2011-11-26 15:25:37

回答

3

IModuleCatalog GetModuleCatalog()和InitializeModules都來自UnityBootstrapper。

  • GetModuleCatalog用於配置您要如何加載模塊。 InitializeModules用於初始化模塊。

  • GetModulecatalog將在調用初始化模塊之前觸發。

  • 對於大多數場景,您不需要重寫InitializeModules,但需要告訴UnityBootstrapper如何加載模塊(基於app.config,Directory Lookup或Xap Dynamic Loader等) )

希望它有幫助。

相關問題