Unity中Web.Config文件的配置与调用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Unity中Web.Config文件的配置与调用
在上一篇文章“Unit简单依赖注入”我们可以实现构造对象和被依赖对象之间的松耦合,使我们的抽象层(Player)能够保持稳定,但是在并没有把客户类和Player类之间彻底解耦,即当我们不想使用MP3Player注入,而想使用CDPlayer 注入时,我们需要修改客户类的容器注册。下面我们使用web.config配置文件来解决这个问题。
Unity 应用程序块可以从XML 配置文件中读取配置信息。配置文件可以是Windows Forms 应用程序的App.config 或者 应用程序的Web.config。当然,也可以从任何其他XML 格式的文件或者其他数据源中加载配置信息。
在本文中,将研究Unity 配置文件的格式、配置的读取、通过示例说明实例的获取。
1. Unity 配置文件的完整格式
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity"
type="Microsoft.Practices.Unity.Configuration.UnityConfig urationSection,Microsoft.Practices.Unity.Configuration,
Version=1.0.0.0,Culture=neutral,
PublicKeyToken=31bf3856ad364e35" />
</configSections>
<unity>
<typeAliases>
<typeAlias alias="singleton"
type="Microsoft.Practices.Unity.ContainerControlledLifetim eManager,Microsoft.Practices.Unity" />
<typeAlias alias="external"
type="Microsoft.Practices.Unity.ExternallyControlledLifeti meManager, Microsoft.Practices.Unity" />
<typeAlias alias="IMyInterface"
type="MyApplication.MyTypes.MyInterface, MyApplication.MyTypes" />
<typeAlias alias="MyRealObject"
type="MyApplication.MyTypes.MyRealObject, MyApplication.MyTypes" />
<typeAlias alias="IMyService"
type="MyApplication.MyTypes.MyService, MyApplication.MyTypes" />
<typeAlias alias="MyDataService"
type="MyApplication.MyTypes.MyDataService,
MyApplication.MyTypes" />
<typeAlias alias="MyCustomLifetime"
type="MyApplication.MyLifetimeManager, MyApplication.MyTypes" />
</typeAliases>
<containers>
<container name="containerOne">
<types>
<type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass" />
<type type="IMyInterface"
mapTo="MyRealObject" name="MyMapping" />
<type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass">
<lifetime type="singleton" />
</type>
<type type="IMyInterface"
mapTo="MyRealObject" name="RealObject">
<lifetime type="external" />
</type>
<type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass">
<lifetime value="sessionKey"
type="MyApplication.MyTypes.MyLifetimeManager,MyApp lication.MyTypes" />
</type>
<type type="IMyInterface"
mapTo="MyRealObject" name="CustomSession">
<lifetime type="MyCustomLifetime"
value="ReverseKey"
typeConverter="MyApplication.MyTypes.MyTypeConverte r,MyApplication.MyTypes" />
</type>
<type type="IMyService"
mapTo="MyDataService" name="DataService">
<typeConfig
extensionType="Microsoft.Practices.Unity.Configuration.T ypeInjectionElement,
Microsoft.Practices.Unity.Configuration">
<constructor>
<param name="connectionString" parameterType="string">
<value value="AdventureWorks"/>
</param>