Prism 源码解读1-Bootstrapper和Region的创建

之前也研究过Prism框架但是一直没有深入理解,现在项目上想把一个Winform的桌面应用程序改造成WPF程序,同时我希望程序是可测试可维护架构良好的,Prism的这些设计理念正好符合我的需求,其主要用于WPF和Xamarin,用于构建松耦合,可维护,可测试的应用程序框架,在我看到源码后也深受启发,欢迎大家一起交流探讨。

开始

我将从官方的Samples的顺序,看介绍中的每个功能是怎么实现的。

0、PrismApplicationBase

首先介绍一下这个类,这是Startup,这个类中构建了所有的Prism功能和整体的框架。这个类中大多数的方法都是虚方法,可以重载加入自定义的一些功能,Prism也希望我们如此进行设计。

在整个Prism中,UnityContainer无处不再,它就是一个大的容器,保存着所有类,在需要的时候Resolver出来。

1585470691950

有两个字段,ContainerExtension就UnityContainer,当然也可以自定义其他的容器,在文章中都默认为UnityContainer容器,关于容器也给一个官方说明

Prism 源码解读1-Bootstrapper和Region的创建

ModuleCatalog是定义了加载Module的方式,模块是Prism的一大优势,给一张官方说明,意图胜千言

Prism 源码解读1-Bootstrapper和Region的创建

所有的一切都是从一个类开始PrismApplicationBase,在这个类中加载了Prism的所有功能。

1585471475741

看一下最重要的一个方法,正是在这个方法中完成了大部分功能,其主要工作就是将基础架构模块,RequireTypes,RegionAdapterMappings,RegionBehaviors,注入到相应的容器中。

下面几个方法感受一下

1585471851178

1585471862192

1585471872010

1585471899983

1585471908276

在PrismApplicationBase的子类中看一下

1585472041462

正如我前面所说,重写某个方法,先调用Base.Method,然后再加入自己功能

对于开发者来说必须重写的就两个方法

1585472248282

创建主窗体和RegisterTypes方法,在第二个方法里可以加入我们所必须的一些基础构建,ContainerRegistry其实就是注册的Unity容器

1585472365902

下面让我们愉快的看例子吧。例子都在Prism-Samples-Wpf-master中一共29个,https://github.com/PrismLibrary/Prism-Samples-Wpf

1、BootstrapperShell

1585472950515

1585472994216

看着就是创建了一个Bootstraper然后Run了一下,通过容器创建了主窗体,Show了一下。

看一下如何实现的,其实文章都是在Bootstrapper中

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzxjz.html