Prism学习(4)---弃远就近UnityBootstrapper
2012-03-29 19:22
387 查看
Bootstrapper类,在Prism框架中的启动器类。它的职责是初始化并启动系统。在我所重构的计算器项目中,它的工作就是完成Application项目中Program类里的Main方法的实现部分。既然Prism框架为了我们提供了一个这样的神器,那我还何必要舍近求远的自己实现呢?
今天这一章将是重构计算器部分的最后一章。之后,我将继续深入的学习如何在Silverlight项目中应用Prism框架。
先看看Unity中的Bootstrapper类吧。在Unity中有一个继承致Bootstrapper类的抽象类,它的类名叫 UnityBootstrapper。之前说过,在Prism框架中,有两种IOC框架:Unity和MEF。在MEF中继承继Bootstrapper的类叫MEFBootstrapper。以后有机会再去好好的学一下,也好做一个对比,便于在今后的项目中选择。回到UnityBootstrapper上来,这个类也是一个抽象类,不能直接使用。不过,它用起来还是比较简单和方便的。看看在这个项目中该如何使用:
Main函数中原来的方法:
上面的代码看起来有点杂。不过没有关系,我们可以自己定义一个UnityBootstrapper类。把这些杂乱的事情交给它去完成。
下面的类,定义在Application项目中,如下:
因为,我的计算器是基于命令提示符的。所以,不需要新建Shell。关于Shell的概念,我将在后面详细说明。而重写CreateModuleCatalog方法,是为了让UnityBootstrapper启动后,使用ConfigurationModuleCatalog去读取配置文件中的信息,并加载程序集。之后的章节中,再深入研究。 启动器定义好了,让我们看看,它为我们省下了多少事吧。 上代码:
没有错,就是这么简单,不需要做其它任何的改动。在运行的时候,甚至还可以看到调试信息。
今天的改动量比较小,就不传代码了。计算器的重构,到此就完了。在此以解决方案的程序集关系图和类关系图结束此部分。明天继续深入学习Prism框架在Silverlight中的应用。
程序集关系图:
类的关系图:
今天这一章将是重构计算器部分的最后一章。之后,我将继续深入的学习如何在Silverlight项目中应用Prism框架。
先看看Unity中的Bootstrapper类吧。在Unity中有一个继承致Bootstrapper类的抽象类,它的类名叫 UnityBootstrapper。之前说过,在Prism框架中,有两种IOC框架:Unity和MEF。在MEF中继承继Bootstrapper的类叫MEFBootstrapper。以后有机会再去好好的学一下,也好做一个对比,便于在今后的项目中选择。回到UnityBootstrapper上来,这个类也是一个抽象类,不能直接使用。不过,它用起来还是比较简单和方便的。看看在这个项目中该如何使用:
Main函数中原来的方法:
static void Main(string[] args) { UnityContainer Container = new UnityContainer(); Container.RegisterInstance<IServiceLocator>( new UnityServiceLocatorAdapter(Container)); Container.RegisterType<IModuleInitializer, ModuleInitializer>(); ILoggerFacade logger = new TextLogger(); Container.RegisterInstance<ILoggerFacade>(logger); Container.RegisterType<IModuleCatalog, ConfigurationModuleCatalog>(); Container.RegisterType<IModuleManager, ModuleManager>(); IModuleManager Manager = Container.Resolve<IModuleManager>(); Manager.Run(); }
上面的代码看起来有点杂。不过没有关系,我们可以自己定义一个UnityBootstrapper类。把这些杂乱的事情交给它去完成。
下面的类,定义在Application项目中,如下:
public class CalculatorUnityBootstrapper: UnityBootstrapper { protected override IModuleCatalog CreateModuleCatalog() { return (new ConfigurationModuleCatalog()); } protected override System.Windows.DependencyObject CreateShell() { return null; } }
因为,我的计算器是基于命令提示符的。所以,不需要新建Shell。关于Shell的概念,我将在后面详细说明。而重写CreateModuleCatalog方法,是为了让UnityBootstrapper启动后,使用ConfigurationModuleCatalog去读取配置文件中的信息,并加载程序集。之后的章节中,再深入研究。 启动器定义好了,让我们看看,它为我们省下了多少事吧。 上代码:
static void Main(string[] args) { CalculatorUnityBootstrapper boot = new CalculatorUnityBootstrapper(); boot.Run(); }
没有错,就是这么简单,不需要做其它任何的改动。在运行的时候,甚至还可以看到调试信息。
今天的改动量比较小,就不传代码了。计算器的重构,到此就完了。在此以解决方案的程序集关系图和类关系图结束此部分。明天继续深入学习Prism框架在Silverlight中的应用。
程序集关系图:
类的关系图:
相关文章推荐
- Prism学习历程三、Bootstrapper
- Prism学习(2)---初识Unity
- prism4学习笔记6:prism、Mef和Unity、MVVM的关系
- unity基础开发--学习EZGUI教程
- Unity学习笔记 - Assets, Objects and Serialization
- Unity学习一
- Prism学习(6)---Shell Region View
- Unity学习笔记(二)——第一个Unity项目Hello Unity
- 小韵游戏开发学习笔记——第三期:Unity工程创建及界面功能的基本介绍
- 蓝鸥Unity开发基础——类型转换学习笔记
- Unity Ioc 学习笔记1
- Unity学习笔记(一):StopLight QuickStart
- Unity学习笔记(4) --- Unity的界面排版:初识GUI
- unity学习笔记,关于一些类
- Unity 3D 学习笔记
- WPF与Prism一并学习(一)
- unity学习(二)
- [转]Prism,Unity,WPF,MVVM
- Unity学习(四):Unity中的法线贴图和天空盒
- 从Prism中学习设计模式之Event Aggregator 模式