配置Unity Application Block

Unity Application Block能从XML配置文件读取配置信息。 默认情况下,一般是随同应用程序的 App.configWeb.config文件。然而,你也能从其他XML格式文件或者其他来源中加载配置信息。 接下来的章节中详细描述了如何配置Unity Application Block:
  • Unity配置文件格式
  • 加载配置信息到容器
  • 使用替换配置源
  • 动态配置构造函数,属性和方法注入
  • Unity配置图解
  • 针对Unity Application Block的源结构

Unity配置文件格式
如下的XML展示了配置文件的大体结构。 如果你想针对application block提供配置信息,必须使用文本编辑器(例如Visual Studio文本编辑)修改该文件。对于Unity Application Block中每个元素(element)和属性(attribute)的具体含义,参见针对Unity Application Block的源结构 和 Unity配置图解
<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<configSections>

<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>

</configSections>

<unity>

<typeAliases>

<typeAlias alias="int" type="System.Int32, mscorlib" />

<typeAlias alias="singleton"

type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />

<typeAlias alias="transient"

type="Microsoft.Practices.Unity.TransientLifetimeManager, Microsoft.Practices.Unity" />

<typeAlias alias="IMachineDisplay"

type="SlotMachine.IMachineDisplay, SlotMachine" />

<typeAlias alias="ISpinner"

type="SlotMachine.ISpinner, SlotMachine" />

<typeAlias alias="IWinningsCalculator"

type="SlotMachine.IWinningsCalculator, SlotMachine" />

</typeAliases>

<containers>

<container>

<types>

<type type="IMachineDisplay" mapTo="SlotMachine.ConsoleDisplay, SlotMachine">

<lifetime type="singleton" />

</type>

<type type="ISpinner" mapTo="SlotMachine.SimpleSpinner, SlotMachine">

<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration">

<property name="Display" propertyType="IMachineDisplay" />

</typeConfig>

</type>

<type type="IWinningsCalculator" mapTo="SlotMachine.AirportWinningsCalculator, SlotMachine" />

<type type="SlotMachine.SlotMachine, SlotMachine">

<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration">

<constructor>

<param name="id" parameterType="int">

<value value="37" type="int" />

</param>

<param name="display" parameterType="IMachineDisplay">

<dependency />

</param>

<param name="spinner" parameterType="ISpinner">

<dependency />

</param>

<param name="calculator" parameterType="IWinningsCalculator">

<dependency name="debug"/>

</param>

</constructor>

</typeConfig>

</type>

</types>

</container>

<container name="child">

<types>

<type type="IMachineDisplay" mapTo="SlotMachine.ConsoleDisplay, SlotMachine">

<lifetime type="transient" />

</type>

</types>

</container>

</containers>

</unity>

</configuration>


编辑

1.1 配置节

Unity 的配置节的名称为”unity",节处理程序的类型为 Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,它包含在程序 集 Microsoft.Practices.Unity.Configuration 中。

编辑

1.2 unity 的子元素

unity 的子元素包含了一个 containers 元素,此元素有一个必须的属性 Default (此属性在目前的版本中不可用),它用于指定在不指定容器获取容器的配置时的默认容器。

containers 元素可以包含若干个 container 元素。container 元素就是每个容器的配置,它有一个可选的 name 属性,用于指定容器的名称。

container 元素有下列子元素:
  • types 元素
  • instances 元素
  • extensions 元素
注意:不能嵌套定义容器,即 container 元素不能嵌套。

编辑

1.3 types 元素

types 元素是 container 元素的子元素之一。包含任意数量的 type元素,用以添加类型注册。
下面的表格列出了用于 types 的 type元素的属性。

属性 描述
name 在注册此类型时使用的名称。此属性是可选的,如果不指定此属性,所在的 add 元素即为默认的类型映射。
type 容器中配置的源类型。如果这是映射注册,这就是映射的起始对象的类型;如果这是单件注册,这就是对象的类型。此属性是必须的。
mapTo 类型映射的目标类型。如果这是映射注册,这就是映射的目标对象的类型。此属性是可选的。
lifetime 设 置用于给定的类型和名称的生命周期。是一个来自 LifetimeStyle 枚举的值。有效的值是 Transient(默认),它导致了容器每次都创建一个新的实例;以及 Singleton,它使容器为每个请求返回同一实例。如果在配置一个单件时同时指定了 type 和 mapto 属性,SetSingleton 方法将返回指定在 mapTo 属性中的类型。如果 mapTo 属性没有指定值,SetSingleton 方法将返回指定在 type 属性中的类型。

在此的单件(Singleton)即是人们常说的单件模式中的单件。SetSingleton 方法是容器提供的用于获取单件的方法。容器会根据 lifetime 属性来决定生成实例的方式。

编辑

1.4 instances 子元素

instances 元素保持了用于此容器的已有对象实例的列表。这些对象(包括简单类型如数据库连接字符串)被用容器的 RegisterInstance 方法进行注册。instances 元素包含了一系列添加单个实例的 add 元素。

下面的表格列出了用于用于实例的 add 元素的属性。

属性 描述
name 注册此实例时使用的名称。此属性是可选的。
type 此实例的类型。此属性是可选的。如果忽略,假定的类型是 System.String。
value 用于初始化实例的值。此属性是必须的。
typeConverter 用以转换提供的值到实例的匹配类型的类型转换器。如果没有指定,将使用指定类型的默认转换器。此属性是可选的。



编辑

1.5 extensions 元素

extensions 元素保持了添加注册到 Unity 容器的扩展的列表。extensions 包含一系列添加单个扩展的 add 元素。

下面的表格列出了用于用于扩展的 add 元素的属性。

属性 描述
type 添加到容器的扩展的类型。此属性是必须的。


你可能感兴趣的:(application)