Unity中WebConfig文件的配置与调用.docx
- 文档编号:2073758
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:8
- 大小:17.34KB
Unity中WebConfig文件的配置与调用.docx
《Unity中WebConfig文件的配置与调用.docx》由会员分享,可在线阅读,更多相关《Unity中WebConfig文件的配置与调用.docx(8页珍藏版)》请在冰豆网上搜索。
Unity中WebConfig文件的配置与调用
Unity中Web.Config文件的配置与调用
在上一篇文章“Unit简单依赖注入”我们可以实现构造对象和被依赖对象之间的松耦合,使我们的抽象层(Player)能够保持稳定,但是在并没有把客户类和Player类之间彻底解耦,即当我们不想使用MP3Player注入,而想使用CDPlayer注入时,我们需要修改客户类的容器注册。
下面我们使用web.config配置文件来解决这个问题。
Unity应用程序块可以从XML配置文件中读取配置信息。
配置文件可以是WindowsForms应用程序的App.config或者ASP.NET应用程序的Web.config。
当然,也可以从任何其他XML格式的文件或者其他数据源中加载配置信息。
在本文中,将研究Unity配置文件的格式、配置的读取、通过示例说明实例的获取。
1.Unity配置文件的完整格式
<?
xmlversion="1.0"encoding="utf-8"?
>
<configuration>
<configSections>
<sectionname="unity"type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>
</configSections>
<unity>
<typeAliases>
<typeAliasalias="singleton"type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager,Microsoft.Practices.Unity"/>
<typeAliasalias="external"type="Microsoft.Practices.Unity.ExternallyControlledLifetimeManager,Microsoft.Practices.Unity"/>
<typeAliasalias="IMyInterface"type="MyApplication.MyTypes.MyInterface,MyApplication.MyTypes"/>
<typeAliasalias="MyRealObject"type="MyApplication.MyTypes.MyRealObject,MyApplication.MyTypes"/>
<typeAliasalias="IMyService"type="MyApplication.MyTypes.MyService,MyApplication.MyTypes"/>
<typeAliasalias="MyDataService"type="MyApplication.MyTypes.MyDataService,MyApplication.MyTypes"/>
<typeAliasalias="MyCustomLifetime"type="MyApplication.MyLifetimeManager,MyApplication.MyTypes"/>
</typeAliases>
<containers>
<containername="containerOne">
<types>
<typetype="Custom.MyBaseClass"mapTo="Custom.MyConcreteClass"/>
<typetype="IMyInterface"mapTo="MyRealObject"name="MyMapping"/>
<typetype="Custom.MyBaseClass"mapTo="Custom.MyConcreteClass">
<lifetimetype="singleton"/>
</type>
<typetype="IMyInterface"mapTo="MyRealObject"name="RealObject">
<lifetimetype="external"/>
</type>
<typetype="Custom.MyBaseClass"mapTo="Custom.MyConcreteClass">
<lifetimevalue="sessionKey"type="MyApplication.MyTypes.MyLifetimeManager,MyApplication.MyTypes"/>
</type>
<typetype="IMyInterface"mapTo="MyRealObject"name="CustomSession">
<lifetimetype="MyCustomLifetime"value="ReverseKey"typeConverter="MyApplication.MyTypes.MyTypeConverter,MyApplication.MyTypes"/>
</type>
<typetype="IMyService"mapTo="MyDataService"name="DataService">
<typeConfigextensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement,Microsoft.Practices.Unity.Configuration">
<constructor>
<paramname="connectionString"parameterType="string">
<valuevalue="AdventureWorks"/>
</param>
<paramname="logger"parameterType="ILogger">
<dependency/>
</param>(车延禄)
</constructor>
<propertyname="Logger"propertyType="ILogger"/>
<methodname="Initialize">
<paramname="connectionString"parameterType="string">
<valuevalue="contoso"/>
</param>
<paramname="dataService"parameterType="IMyService">
<dependency/>
</param>
</method>
</typeConfig>
</type>
</types>
<instances>
<addname="MyInstance1"type="System.String"value="Somevalue"/>
<addname="MyInstance2"type="System.DateTime"value="2008-02-05T17:
50:
00"/>
</instances>
<extensions>
<addtype="MyApp.MyExtensions.SpecialOne"/>
</extensions>
<extensionConfig>
<addname="MyExtensionConfigHandler"type="MyApp.MyExtensions.SpecialOne.ConfigHandler"/>
</extensionConfig>
</container>
</containers>
</unity>
</configuration>
结构图示:
看到上面的内容好多人会感到怎么这么复杂啊?
实际上,上面的内容是一个完整的结构,以供参考,在日常开发中一般不会全用到的,这里用的最多的元素标记是:
<containers>中的<container>内部的<type>标记。
Unity的配置节的名称为”Unity",节处理程序的类型为Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,它包含在程序集Microsoft.Practices.Unity.Configuration中。
所在应当在网站是添加该程序集的引用。
unity的子元素包含了一个containers元素,containers元素可以包含若干个container元素。
container元素就是每个容器的配置,它有一个可选的name属性,用于指定容器的名称。
<types>元素是container元素的子元素之一。
包含任意数量的type元素,用以添加类型注册,这些配置被container.RegisterType<TFrom,TTo>()注册;
type元素的属性。
name:
在注册此类型时使用的名称。
此属性是可选的,如果不指定此属性,所在的add元素即为默认的类型映射。
type:
容器中配置的源类型。
如果这是映射注册,这就是映射的起始对象的类型;如果这是单件注册,这就是对象的类型。
此属性是必须的。
mapTo:
类型映射的目标类型。
如果这是映射注册,这就是映射的目标对象的类型。
此属性是可选的。
lifetime:
设置用于给定的类型和名称的生命周期。
是一个来自LifetimeStyle枚举的值。
有效的值是Transient(默认),它导致了容器每次都创建一个新的实例;以及Singleton,它使容器为每个请求返回同一实例。
如果在配置一个单件时同时指定了type和mapto属性,SetSingleton方法将返回指定在mapTo属性中的类型。
如果mapTo属性没有指定值,SetSingleton方法将返回指定在type属性中的类型。
<instances>元素保持了用于此容器的已有对象实例的列表。
这些对象被用容器的RegisterInstance方法进行注册。
instances元素包含了一系列添加单个实例的add元素。
add元素的属性。
name:
注册此实例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Unity WebConfig 文件 配置 调用