zoukankan      html  css  js  c++  java
  • Prism学习(4)弃远就近UnityBootstrapper

    Bootstrapper类,在Prism框架中的启动器类。它的职责是初始化并启动系统。在我所重构的计算器项目中,它的工作就是完成Application项目中Program类里的Main方法的实现部分。既然Prism框架为了我们提供了一个这样的神器,那我还何必要舍近求远的自己实现呢?

    今天这一章将是重构计算器部分的最后一章。之后,我将继续深入的学习如何在Silverlight项目中应用Prism框架。

    先看看Unity中的Bootstrapper类吧。在Unity中有一个继承致Bootstrapper类的抽象类,它的类名叫 UnityBootstrapper。之前说过,在Prism框架中,有两种IOC框架:Unity和MEF。在MEF中继承继Bootstrapper的类叫MEFBootstrapper。以后有机会再去好好的学一下,也好做一个对比,便于在今后的项目中选择。回到UnityBootstrapper上来,这个类也是一个抽象类,不能直接使用。不过,它用起来还是比较简单和方便的。看看在这个项目中该如何使用:

    Main函数中原来的方法:

     1     static void Main(string[] args)
    2 {
    3 UnityContainer Container = new UnityContainer();
    4
    5 Container.RegisterInstance<IServiceLocator>(
    6 new UnityServiceLocatorAdapter(Container));
    7
    8 Container.RegisterType<IModuleInitializer, ModuleInitializer>();
    9
    10 ILoggerFacade logger = new TextLogger();
    11 Container.RegisterInstance<ILoggerFacade>(logger);
    12
    13 Container.RegisterType<IModuleCatalog, ConfigurationModuleCatalog>();
    14
    15 Container.RegisterType<IModuleManager, ModuleManager>();
    16
    17 IModuleManager Manager = Container.Resolve<IModuleManager>();
    18 Manager.Run();
    19 }

    上面的代码看起来有点杂。不过没有关系,我们可以自己定义一个UnityBootstrapper类。把这些杂乱的事情交给它去完成。 

    下面的类,定义在Application项目中,如下:

     1     public class CalculatorUnityBootstrapper: UnityBootstrapper
    2 {
    3 protected override IModuleCatalog CreateModuleCatalog()
    4 {
    5 return (new ConfigurationModuleCatalog());
    6 }
    7
    8 protected override System.Windows.DependencyObject CreateShell()
    9 {
    10 return null;
    11 }
    12 }

    因为,我的计算器是基于命令提示符的。所以,不需要新建Shell。关于Shell的概念,我将在后面详细说明。而重写CreateModuleCatalog方法,是为了让UnityBootstrapper启动后,使用ConfigurationModuleCatalog去读取配置文件中的信息,并加载程序集。之后的章节中,再深入研究。 启动器定义好了,让我们看看,它为我们省下了多少事吧。 上代码:

    1     static void Main(string[] args)
    2 {
    3 CalculatorUnityBootstrapper boot = new CalculatorUnityBootstrapper();
    4 boot.Run();
    5 }

    没有错,就是这么简单,不需要做其它任何的改动。在运行的时候,甚至还可以看到调试信息。

    今天的改动量比较小,就不传代码了。计算器的重构,到此就完了。在此以解决方案的程序集关系图和类关系图结束此部分。明天继续深入学习Prism框架在Silverlight中的应用。

    程序集关系图:

    类的关系图:




  • 相关阅读:
    今天开始用 VSU 2010
    Visual Studio 2010 模型设计工具 基本应用
    Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
    Enterprise Library 4.1 Security Block 快速使用图文笔记
    解决“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。”(图)
    一个Oracle存储过程示例
    Enterprise Library 4.1 Application Settings 快速使用图文笔记
    Oracle 10g for Windows 简体中文版的安装过程
    Oracle 11g for Windows 简体中文版的安装过程
    Oracle 9i 数据库 创建数据库 Net 配置 创建表 SQL查询 创建存储过程 (图)
  • 原文地址:https://www.cnblogs.com/prolove2/p/2424043.html
Copyright © 2011-2022 走看看