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

}
4

1 回答 1

3

IModuleCatalog GetModuleCatalog() 和 InitializeModules 都来自 UnityBootstrapper。

  • GetModuleCatalog 用于配置您希望如何加载模块。InitializeModules 用于初始化模块。

  • GetModulecatalog 将在调用初始化模块之前被触发。

  • 在大多数情况下,您不需要覆盖 InitializeModules,但您需要告诉 UnityBootstrapper 您希望如何加载模块(基于 app.config、Directory Lookup 或 Xap Dynamic Loader 等)

希望能帮助到你。

于 2009-07-17T15:59:52.720 回答