2009-07-17 3 views
2

Может кто-нибудь объяснить разницу между таким образом нагрузочных модулей Prism:В чем разница между этими двумя способами загрузки модулей в 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

ответ

3

Оба модуля IModuleCatalog GetModuleCatalog() и InitializeModules взяты из UnityBootstrapper.

  • GetModuleCatalog предназначен для настройки того, как вы хотите загрузить модуль. И InitializeModules для инициализации модуля.

  • GetModulecatalog будет запущен перед вызовом Инициализация модуля.

  • Вам не нужно переопределять InitializeModules для большинства сценариев, но вам нужно сообщить UnityBootstrapper, как вы хотите, чтобы ваши модули загружались (на основе app.config, поиска по каталогам или Xap Dynamic Loader или т. Д.)

Надеюсь, это поможет.