Java教程

Prism入门之模块(Module)

本文主要是介绍Prism入门之模块(Module),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

通过约定的方式去约束它,Prism通过约定俗成的定义去查找他

一、创建模块项目

1、首先创建WPF项目,再将里面的默认文件删掉并将项目输出类型更改为类库

image-20210816220019346

image-20210816215152917

image-20210816215221779

2、接着创建模块的配置文件,做法类似于MEF/MAF框架(用于设计模块化项目的框架)这里不详细展开细说。

安装Prism.Droc包

image-20210816215603514

3、完事需要在该配置文件中继承IModule,并实现所需接口

image-20210816215740350

4、还需要像在App.cs中一样在RegisterTypes方法中注册视图

RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.RegisterForNavigation<ViewA>();
        }

ModuleB也同样如法炮制

二、在宿主程序中添加刚才创建的模块

1、重写ConfigureModuleCatalog方法,使用IModuleCatalog添加模块

image-20210816221000853

protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
        {
            moduleCatalog.AddModule<ModuleAProfile>();
            moduleCatalog.AddModule<ModuleBProfile>();
            base.ConfigureModuleCatalog(moduleCatalog);
        }

运行效果:

2

通过上面我们可以发现一个弊端,就是宿主程序与模块之间有强引用关系,我们在ConfigureModuleCatalog函数中通过AddModule将模块A或B中的配置文件加载了进去,一旦需要移除或添加新的模块肯定需要改动代码。我们可以通过一定的约束,通过路径去找到某个路径下的模块添加进去。

三、通过文件夹加载模块

我们只需要在App.cs中重写Prism框架中的CreateModuleCatalog方法,返回一个路径,框架本身会通过约定俗成的约定去查找模块

 protected override IModuleCatalog CreateModuleCatalog()
        {
            return new DirectoryModuleCatalog() { ModulePath = @".\Modules" };
        }

在生产环境中更推荐使用后面这种方式去使用模块

这篇关于Prism入门之模块(Module)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!