博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从PRISM开始学WPF(四)Prism-Module?
阅读量:4586 次
发布时间:2019-06-09

本文共 2222 字,大约阅读时间需要 7 分钟。

原文:

0x4Modules

Modules是能够独立开发、测试、部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服务的模块(如Logging、Exception Management)。

既然Modules能够独立开发、测试、部署,那么如何告诉Shell(我们的宿主程序)去Load哪些Module,以怎样的形式Load这些Module呢?Prism为此提供了一个叫ModuleCatalog的东西。他用这个来管理Module。所以在App启动之初,需要创建配置一个ModuleCatalog。

✏:
先新增一个WpfApp项目,命名ModuleA,删除App.config和App.xaml,然后将outputType改为Class Library。

在Views文件夹下面新建一个用户控件ViewA

新增一个类ModuleAModule.cs实现IModule接口(每一个Module类都要实现这个接口,而每一个Module都要有这样一个类来对Module里的资源统一管理)

using ModuleA.Views;using Prism.Modularity;using Prism.Regions;namespace ModuleA{    public class ModuleAModule : IModule    {        IRegionManager _regionManager;        public ModuleAModule(RegionManager regionManager)        {            _regionManager = regionManager;        }        public void Initialize()        {            _regionManager.RegisterViewWithRegion("ContentRegion", typeof(ViewA));        }    }}

他通过View Discovery的方式,将ModuleA的ViewA与_regionManager(这里是依赖注入)的Region"ContentRegion"进行关联。

那么,ModuleCatalog是怎样让Shell加载ModuleA的呢?,,ԾㅂԾ,,

代码

先在shell所在module添加ModuleA引用,然后:

Bootstrapper.cs中重写ConfigureModuleCatalog

protected override void ConfigureModuleCatalog()        {            var catalog = (ModuleCatalog)ModuleCatalog;            catalog.AddModule(typeof(ModuleAModule));        }

啊妹子,炒鸡简单有没有?

配置文件

Bootstrapper.cs中重写CreateModuleCatalog

protected override IModuleCatalog CreateModuleCatalog()        {            return new ConfigurationModuleCatalog();        }

这表示,ModuleCatalog将从配置文件中创建。

App.config中添加了

通过配置文件来配置ModuleCatalog就不需要添加ModuleA引用了

Directory

这个很尴尬,我调试一直不通过,辣鸡(●'◡'●)

LoadManual

Bootstrapper.cs中重写ConfigureModuleCatalog

protected override void ConfigureModuleCatalog()        {            var moduleAType = typeof(ModuleAModule);            ModuleCatalog.AddModule(new ModuleInfo()            {                ModuleName = moduleAType.Name,                ModuleType = moduleAType.AssemblyQualifiedName,                InitializationMode = InitializationMode.OnDemand            });        }
posted on
2018-06-04 00:14 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/9131405.html

你可能感兴趣的文章
python导入import requests报错
查看>>
Hexo博客搭建
查看>>
内部类详解(很详细)
查看>>
dubbox系列【三】——简单的dubbox提供者+消费者示例
查看>>
常见sql 写法总结
查看>>
Windows xp搭建Windows Phone 7开发环境
查看>>
[bzoj] 1597 土地购买 || 斜率优化dp
查看>>
Lodop的JS模版代码、文档式模版 生成加载赋值博文索引
查看>>
Python安装和开发环境搭建
查看>>
[USACO4.2] 草地排水 Drainage Ditches (最大流)
查看>>
dotnetcore+vue+elementUI 前后端分离 三(前端篇)
查看>>
gdb输入输出重定向
查看>>
包含.h就可以用其对应的函数
查看>>
【转】block一点也不神秘————如何利用block进行回调
查看>>
mysql忘记root密码的处理方法
查看>>
Newtonsoft.Json之JArray, JObject, JProperty,JValue
查看>>
OO Summary (Homework 9-11)
查看>>
fedora 解决yumBackend.py进程CPU占用过高
查看>>
NTP 协议介绍
查看>>
软件测试 · 白盒测试
查看>>