这两种在Prism中加载模块的方法有什么区别?

时间:2009-07-17 15:06:19

标签: wpf prism module

任何人都可以解释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 个答案:

答案 0 :(得分:3)

IModuleCatalog GetModuleCatalog()和InitializeModules都来自UnityBootstrapper。

  • GetModuleCatalog用于配置加载模块的方式。 InitializeModules用于初始化模块。

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

  • 在大多数情况下,您无需覆盖InitializeModules,但您需要告诉UnityBootstrapper您希望如何加载模块(基于app.config,目录查找或Xap动态加载程序或等)

希望它有所帮助。