Prism 学习:从配置文件中加载 Module

之前我们已经了解过,如何从指定的目录中来加载 Module(原文),现在我们来看,如何从应用程序的配置文件中来加载 Module。以这种方式来加载 Module 的优点包括:1. 被加载的 Module 不需要被引用到主程序中;2. 配置文件可以根据实际情况修改,而不需要重新编译程序。

大概需要以下几步:

1. 将 Module 所在的类库文件复制到应用程序所在的地方,可以与主程序同目录,也可以在主程序下的子目录中;

2. 在 Bootstrapper 中重载 CreateModuleCatalog 方法;

3. 修改应用程序的配置文件

重载 CreateModuleCatalog 方法

在 Bootstrapper.cs 中添加以下代码:

        protected override Microsoft.Practices.Prism.Modularity.IModuleCatalog CreateModuleCatalog()
        {
            return new ConfigurationModuleCatalog();
        }

修改配置文件(app.config)

1. 在 configuration 节点下添加 configSections

  <configSections>
    <section name="modules" type="Microsoft.Practices.Prism.Modularity.ModulesConfigurationSection, Microsoft.Practices.Prism.Composition"/>
  </configSections>

2. 在 configSections 节点的同步节点(也即 configuration 的子节点),添加 modules 节点,并将要加载的 module 添加到该节点下

  <modules>
    <module assemblyFile="Modules\Hymnal.dll" moduleType="Hymnal.HymnModule, Hymnal, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="HymnModule" />
  </modules>

说明:

1. configSections 节点必须是 configuration 节点下的第一个子节点,不然会出现如下错误:“System.TypeInitializationException”类型的未经处理的异常在 PresentationFramework.dll 中发生

2. 在 module 节点中,assemblyFile 属性指出 Module 所在的类库文件的相对路径;moduleType 属性为该 Module 的 Type 的 AssemblyQualifiedName;moduleName 为 Module 的名称;这三项为必须项;

3. 如果要使 Module 达到按需要加载,则可以再为其添加 startupLoaded="false" 属性。

参考网址:

https://msdn.microsoft.com/en-us/library/gg405479(v=pandp.40).aspx

时间: 2024-11-07 05:13:17

Prism 学习:从配置文件中加载 Module的相关文章

unreal3对象属性自动从配置文件中加载的机制

unrealscript中有两个与属性自动配置相关的关键字: config/globalconfig 当把它们应用于属性时,对象在创建后,该属性的初始值会被自动设置为相对应ini文件中的值. 举例来说,如有一个类: class HNet extends Object config(game) native(net); //var globalconfig string host;var config string host; function test() { `Log("HNet test,

flask学习之配置文件的加载和动态url的使用

七行代码实现一个flask app from flask import Flask app = Flask(__name__) @app.route('/') def helloworld(): return 'helloworld' if __name__ == '__main__': app.run() app.run()只适合调试,不适合生产环境使用,生产环境应该使用Gunicorn和uWSGI启动 配置管理 app.config是flask.config.Config类的实例,该类继承自

Cocos2d-x3.0游戏实例之《别救我》第九篇——从tmx文件中加载关卡怪物

上一篇我们已经制作好tg1.tmx文件了,现在就要使用它了. 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址: http://www.benmutou.com/blog/archives/944 文章来源:笨木头与游戏开发 很抱歉,我们又要新建2个类了,我已经尽力少新建类了,毕竟是教程,类越多越容易混乱. 我们要新建一个Monster类,以及一个MonsterLayer类,专门添加Monster对象. Monster类 来看看Monster.h文件: #ifndef Monste

Prism 学习:从本地目录加载 Module

在 Prism 中,将外部模块加载到主程序有以下几种方式:Code.XAML.配置文件.指定模块目录:其中,如果要使用 Code 方式来加载 Module,则需要将该 Module 引用到当前项目中:而后面两种通过 XAML与配置文件,在原理上大体一致:本文主要讨论第四种方法,即通过指定 Module 所在的目录来加载 Module. 首先,我们需要在 Bootstrapper 类中重载 CreateModuleCatelog 方法,在该方法中定义一个 DirectoryModuleCatalo

Spring中加载xml配置文件的六种方式

因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,所以就总结了下Spring中加载xml配置文件的方式,我总结的有6种, xml是最常见的spring 应用系统配置源.Spring中的几种容器都支持使用xml装配bean,包括: XmlBeanFactory,ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicati

web.xml中如何设置配置文件的加载路径

web应用程序通过Tomcat等容器启动时,会首先加载web.xml文件,通常我们工程中的各种配置文件,如日志.数据库.spring的文件等都在此时被加载,下面是两种常用的配置文件加载路径,即配置文件可以放到 SRC目录下或者可以放到WEB-INF根目录下 第一种在web.xml中这样配置: <context-param> <param-name >contextConfigLocation </param-name > <param-value >clas

spring-boot学习五:Spring boot配置文件的加载位置

1.配置文件的加载位置 spring boot启动的时候会加载全局配置文件application.properties(或者application.yaml)文件,这个文件默认的位置在: 即classpath:/的相对路径下.这个配置文件除了可以在resource下之外,还可以在如下位置: 在classpath:/config/即resources/config下: 在当前工程文件的config文件夹下: 在当前工程的相对路径下: 2.配置文件的加载顺序 以上所说的四个文件的优先级如下: app

Prism 源码解读3-Modules加载

原文:Prism 源码解读3-Modules加载 目录 介绍 0.Modules加载 1.通过AppSetting加载 2.通过代码加载 3.通过目录加载 4.通过手动方式加载 总结 回到顶部 介绍 在软件开发过程中,总想组件式的开发方式,各个组件之间最好互不影响,独立测试.Prism的Modules很好的满足了这一点. 这个架构图很好了讲解了Prism的Modules的概念 Prism支持通过配置文件,文件夹,手动载入Module的方式,并且对Module的载入进行验证,包括重复和循环依赖验证

在Python的Django框架中加载模版的方法

在Python的Django框架中加载模版的方法 为了减少模板加载调用过程及模板本身的冗余代码,Django 提供了一种使用方便且功能强大的 API ,用于从磁盘中加载模板, 要使用此模板加载API,首先你必须将模板的保存位置告诉框架. 设置的保存文件就是settings.py. 如果你是一步步跟随我们学习过来的,马上打开你的settings.py配置文件,找到TEMPLATE_DIRS这项设置吧. 它的默认设置是一个空元组(tuple),加上一些自动生成的注释. TEMPLATE_DIRS =