谁能解释一下在 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));
}
}
最佳答案
IModuleCatalog GetModuleCatalog() 和 InitializeModules 均来自 UnityBootstrapper。
GetModuleCatalog 用于配置加载模块的方式。 InitializeModules 用于初始化模块。
GetModulecatalog 将在调用初始化模块之前被触发。
在大多数情况下,您不需要覆盖 InitializeModules,但您需要告诉 UnityBootstrapper 您希望如何加载模块(基于 app.config、Directory Lookup 或 Xap Dynamic Loader 或等)
希望有帮助。
关于wpf - Prism中这两种加载模块的方式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1143855/