Unity XML 配置文件(2)

Unity Configuration Schematic



Source Schema for the Unity Application Block



下面列出用于配置Unity Application Block(Unity)的元素和属性。配置文件具有如下 section-handler 声明:

<configSections>
  <section name="unity"
           type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,
                 Microsoft.Practices.Unity.Configuration, Version=1.2.0.0,
                 Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </configSections>

section-handler 声明包含配置名称和处理配置数据的类 Microsoft.Practices.Unity.Configuration.UnityConfigurationSection

unity 元素

unity 元素指定 Unity Application Block 配置。该元素是必须的。

<unity>
 
  <typeAliases>
    ...
  </typeAliases>
 
  <containers>
    <container name="containerOne">
      <types>
        ...
      </types>
      <instances>
        ...
      </instances>
      <extensions>
        ...
      </extensions>
      <extensionConfig>
        ...
      </extensionConfig>
    </container>
  </containers>
 
</unity>

其具有如下子元素:

  • typeAliases
  • containers

typeAliases 元素

typeAliases 元素包含可选类型别名的集合,使你可以轻松指定映射(mappings)、生命周期(lifetime)、实例(instances)、扩展(extensions),Unity 容器其他配置地方也能进行这些配置。当在扩展点(extensibility points),如 typeConfig 小节和自定义注入值上指定元素类型时,你不能使用类型别名。

该元素唯一可用的子元素是一个 typeAlias 元素的集合。

<typeAliases>
 
  <!-- Lifetime manager types -->
  <typeAlias alias="singleton"
       type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager,
             Microsoft.Practices.Unity" />
  <typeAlias alias="external"
       type="Microsoft.Practices.Unity.ExternallyControlledLifetimeManager,
             Microsoft.Practices.Unity" />
  <typeAlias alias="perThread"
       type="Microsoft.Practices.Unity.PerThreadLifetimeManager,
             Microsoft.Practices.Unity" />
  <!-- User-defined type aliases -->
  <typeAlias alias="IMyInterface"
       type="MyApplication.MyTypes.MyInterface, MyApplication.MyTypes" />
  <typeAlias alias="MyRealObject" 
       type="MyApplication.MyTypes.MyRealObject, MyApplication.MyTypes" />
  <typeAlias alias="MyCustomLifetime" 
       type="MyApplication.MyLifetimeManager, MyApplication.MyTypes" />
 
</typeAliases>

typeAlias 元素

typeAlias 元素定义一个单独的别名,你可以在配置的其他地方使用它。

typeAlias 元素的属性如表所示:


属性


描述


alias


可以在配置的其他地方使用的别名和速记名,指代指定的类型。该属性是必须的。


type


该别名的类型全名。该属性是必须的。

containers 元素

containers 元素包含 Unity 容器的集合 。唯一的子元素是 container 元素的集合。

container 元素

container 元素包含一个单独容器的细节。

<container name="containerOne">
  <types>
    ...
  </types>
  <instances>
    ...
  </instances>
  <extensions>
    ...
  </extensions>
  <extensionConfig>
    ...
  </extensionConfig>
</container>

container 元素具有如下表的属性:


属性


描述


name


容器的名称。该属性可选。

container 元素具有如下子元素:

  • types 元素
  • instances 元素
  • extensions 元素
  • extensionConfig 元素

types 元素

types 元素包含一个已注册 type 的集合。types 元素包含如下:

  • 包含一系列  type 元素,都是添加的单独 type
  • 包含描述如何完成注入的规范。

元素的唯一子元素是 type 元素。

type 元素

type 元素定义 Unity 容器的类型映射。如果你指定 name,那么 name 用于类型映射,否则,为指定类型创建一个默认映射。

你可以为每个映射指定 lifetime 管理。如果没有显式配置 lifetime,将执行 transient lifetime

<types>
 
  <!-- Type mapping with no lifetime — defaults to "transient" -->  
  <type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass" />
 
  <!-- Type mapping using aliases -->  
  <type type="IMyInterface" mapTo="MyRealObject" />
 
  <!-- Lifetime managers specified using the type aliases -->
  <type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass">
    <lifetime type="singleton" /> 
  </type>
  <type type="IMyInterface" mapTo="MyRealObject" name="RealObject">
    <lifetime type="external" />
  </type>
  <type type="IMyInterface" mapTo="MyRealObject" name="RealObject">
    <lifetime type="perThread" />
  </type>
 
  <!-- Lifetime manager specified using the full type name -->
  <!-- Any initialization data specified for the lifetime manager -->
  <!-- will be converted using the default type converter -->
  <type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass">
    <lifetime value="sessionKey"
              type="MyApplication.MyTypes.MyLifetimeManager,
                    MyApplication.MyTypes" />
  </type>
 
  <!-- Lifetime manager initialization using a custom TypeConverter -->
  <type type="IMyInterface" mapTo="MyRealObject" name="CustomSession">
    <lifetime type="MyCustomLifetime" value="ReverseKey"
              typeConverter="MyApplication.MyTypes.MyTypeConverter,
                             MyApplication.MyTypes" />
  </type>
 
  <!-- type with injection parameters define in configuration -->
  <!-- Type mapping using aliases defined above -->  
  <type type="IMyService" mapTo="MyDataService" name="DataService">
    <typeConfig>
      <constructor>
        <param name="connectionString" parameterType="string">
          <value value="AdventureWorks"/>
        </param>
        <param name="dataService" parameterType="IMyService">
          <dependency />
        </param>
      </constructor> 
      <property name="MyRealObject" propertyType="IMyInterface" />
      <method name="Initialize">
        <param name="connectionString" parameterType="string">
          <value value="contoso"/>
        </param>
        <param name="dataService" parameterType="IMyService">
          <dependency />
        </param>
      </method>
    </typeConfig>
  </type>
 
</types>

下表列出 type 元素的属性:


属性


描述


name


注册类型时使用。该属性是可选的。


type


The source type to configure in the container. The type of the object to map from if this is a mapping registration or the type of the object if this is a singleton registration. Can be a user-defined alias specified in the typeAliases section of the configuration. 该属性是必须的。


mapTo


The destination type for type mapping. The type of the object to map to if this is a mapping registration. 该属性是可选的。

type 元素具有如下子元素:

  • lifetime 元素
  • typeConfig 元素

lifetime 元素

lifetime 元素包含生命周期管理的细节。

<!-- Standard singleton lifetime manager specified using a type alias -->
<type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass">
  <lifetime type="singleton" /> 
</type>
 
<!-- Custom lifetime manager specified using a type alias -->
<!-- and initialized using a custom TypeConverter  -->
<type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass">
  <lifetime type="MyCustomLifetime" value="ReverseKey"
            name="CustomSessionLifetime"
            typeConverter="MyApplication.MyTypes.MyTypeConverter, MyApplication.MyTypes" />
</type>

下表列出 lifetime 元素的属性:


属性


描述


name


注册生命周期管理时使用的名称。该属性是可选的。


type


The type of the lifetime manager to use for this mapping. Can be a user-defined alias specified in the typeAliases section of the configuration or one of the default aliases singleton or external. 该属性是必须的。


value


需要初始化生命周期管理的任何值。该属性是可选的。


typeConverter


The type converter to use to convert the value provided to match the type of the instance. If not specified, the default converter for the specified type is used. Aliases are allowed. 该属性是可选的。

typeConfig 元素

该元素包含如下子元素:

  • constructor 元素
  • property 元素
  • method 元素

(略)

调试程序时,提示不支持该属性。因此,也略过如下元素:constructor 元素、property 元素、method 元素、param 元素、value 元素、dependency 元素、array 元素。

instances Element

The instances element holds a collection of the existing object instances for this container. These are objects registered with the container using the RegisterInstance method. You can register anything with RegisterInstance. Instances added through configuration tend to be simple because it is hard to represent them with a string value, but they could be arbitrarily complex if there is a type converter that can handle the conversion from a string. The instances element contains a series of add elements that add individual instances.

<instances>
  <add name="MyInstance1" type="System.String" value="Some value" />
  <add name="MyInstance2" type="System.DateTime" value="2008-02-05T17:50:00" />
</instances>

The only child element of the instances element is a collection of the add element for instances.

The add element for instances defines an instance mapping to insert into the Unity container.

下表列出 add 元素的属性:


Attribute


Description


name


The name to use when registering this instance. This attribute is optional.


type


The type of this instance. This attribute is optional. Can be a user-defined alias specified in the typeAliases section of the configuration. If omitted, the assumed type is System.String.


value


A string representation of the desired instance that is used to convert from one instance to another. This attribute is required.


typeConverter


The type converter to use to convert the value provided to match the type of the instance. If not specified, the default converter for the specified type is used. This attribute is optional.

 

extensions Element

调试程序时,提示不支持该属性。

(略)

extensionConfig Element

调试程序时,提示不支持该属性。

(略)

interceptors Element

The <interceptors> element encloses the list of interceptors in the configuration and contains a series of <interceptor> elements that specify the individual interceptors.

interceptor Element

default Element

key Element

policies Element

policy Element

matchingRules Element

matchingRule Element

injection Element

callHandlers Element

callHandler Element

 

参考资料

以上链接虽然不再更新,但还是有一定参考价值。关于最新的 Unity 信息在 Unity Application Block site

时间: 2024-11-15 17:22:51

Unity XML 配置文件(2)的相关文章

(转)Unity 导出XML配置文件,动态加载场景

参考:http://www.xuanyusong.com/archives/1919 http://www.omuying.com/article/48.aspx 主要功能: 1.导出场景的配置文件 2.导出当前场景中资源的AssetBundle 3.客户端从服务器获取配置文件 4.解析配置文件,并根据配置文件下载AssetBundle 5.实例化并还原场景 1.场景设置:将需要导出的场景资源设置为预设 2.将场景配置导出为XML文件 [code]csharpcode: using UnityE

struts2中struts.xml配置文件详解

struts.xml的常用配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts

【XML配置文件读取】使用jdom读取XML配置文件信息

在项目中我们经常需要将配置信息写在配置文件中,而XML配置文件是常用的格式. 下面将介绍如何通过jdom来读取xml配置文件信息. 配置文件信息 <?xml version="1.0" encoding="UTF-8"?> <config> <base-config> <stringValue>Hello world</stringValue> <integerValue>8</integ

Mybatis 源码分析--Configuration.xml配置文件加载到内存

(补充知识点: 1 byte(字节)=8 bit(位) 通常一个标准英文字母占一个字节位置,一个标准汉字占两个字节位置:字符的例子有:字母.数字系统或标点符号) 1.创建SqlSessionFactory ①Reader reader = Resources.getResourceAsReader("mybatis-config.xml");                       //获取mybatis配置文件的字符 注解:Resources类是在mybatis中定义的一个类:g

hibernate.cfg.xml配置文件和hbm.xml配置文件 模板

hibernate.cfg.xml配置文件格式 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration

Java学习-023-Properties 类 XML 配置文件读取及写入源代码

之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFromXML(InputStream) 和 storeToXml(OutputStream, String, String),由方法名中的 xml 不难确定这两个方法分别是读取/写入数据到 xml 文件.JDK 文档部分如下所示: 因而此文将通过源码实例演示 Properties 类是如何将数据写入

AndroidManifest.xml配置文件详解 (转)

AndroidManifest.xml配置文件对于Android应用开发来说是非常重要的基础知识,本文旨在总结该配置文件中重点的用法,以便日后查阅.下面是一个标准的AndroidManifest.xml文件样例. [html] view plaincopy <?xml version="1.0" encoding="utf-8"?> <manifest> <!-- 基本配置 --> <uses-permission />

Spring框架[一]——spring概念和ioc入门(ioc操作xml配置文件)

Spring概念 spring是开源的轻量级框架(即不需要依赖其他东西,可用直接使用) spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码来实现: ioc:控制反转,比如:有一个类,在类中有个方法(非静态的方法),要调用类中的这个方法,则需要创建类的对象,使用对象调用方法.创建类对象的过程,需要new出来对象:而ioc则是将对象的创建不是通过new方式实现,而是交给spring配置来创建对象(即,将对象的创建交给spring来管理): spring是一站式框架 spring

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

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