wpf - Prism中这两种加载模块的方式有什么区别?

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

}

最佳答案

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/

相关文章:

wpf - 为WPF vb.net创建和集成帮助文件

c# - 如何在 Prism 框架中的模块之间正确发送事件消息?

python子模块找不到导入

vba - 为什么要在 VBA 类模块中声明新类型?

c# - 我如何在 XAML 中将弹出窗口居中放置在我的窗口中?

wpf - 如何根据命令更改 View + View 模型

ios - Xamarin forms Binded Webview 在 Android 上显示,但在等待任务的 IOS 上不显示

c# - 我的 MEF 导出有问题吗?

java - 如何在Android中实现自定义模块

c# - 从 C# 访问 XAML 实例化对象