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中的应用。

    程序集关系图:

    类的关系图:




  • 相关阅读:
    Spring boot 使用多个RedisTemplate
    Spring boot 连接Redis实现HMSET操作
    Spring boot 工具类静态属性注入及多环境配置
    向量空间模型(Vector Space Model)的理解
    双数组Trie树中叶子结点check[t]=t的证明
    谈谈我对隐马尔可夫模型的理解
    Information Retrieval 倒排索引 学习笔记
    朴素贝叶斯文本分类简单介绍
    Python Thrift 简单示例
    迭代器模式(Iterator)
  • 原文地址:https://www.cnblogs.com/prolove2/p/2424043.html
Copyright © 2011-2022 走看看