任何人都可以解释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));
}
}
答案 0 :(得分:3)
IModuleCatalog GetModuleCatalog()和InitializeModules都来自UnityBootstrapper。
GetModuleCatalog用于配置加载模块的方式。 InitializeModules用于初始化模块。
在调用初始化模块之前将触发GetModulecatalog。
在大多数情况下,您无需覆盖InitializeModules,但您需要告诉UnityBootstrapper您希望如何加载模块(基于app.config,目录查找或Xap动态加载程序或等)
希望它有所帮助。